mimik написав:Скільки буде місця займати r як посилання?
І, яким ще методом можуть бути реалізовані посилання?
Посилання відрізняється від вказівників тим, що їх неможливо перепризначити. Це в багатьох випадках призводить до того, що компілятор має можливість інтерпретувати посилання просто як альтернативне ім'я вже існуючого об'єкта (або функції). Таке посилання буде вирішуватися на етапі компіляції і не буде займати пам'яті взагалі.
Ваш приклад якраз потрапляє в цю категорію.
У тих же випадках, коли це неможливо, тобто коли цільовий об'єкт посилання відомий тільки на етапі виконання, посилання зазвичай реалізується через звичайний вказівник та займає рівно стільки ж пам'яті, як і вказівник.
mimik написав:Тобто в більшості випадків при передачі параметрів у функцію краще використовувати посилання?
Краще для чого? Для ефективності? Для зручності читання?
Передача параметрів в функцію - як раз той випадок, коли в загальному випадку компілятор на етапі компіляції не може знати, куди буде прив'язане посилання. Посилання-параметр зазвичай реалізується через звичайний вказівник. Так що ніякого "краще" з точки зору ефективності тут немає.
Можна хіба що лише зауважити, що в ряді окремих випадків компілятор зможе згенерувати більш ефективний код, спираючись на той факт, що посилання не може бути рівним нулю (nullptr), а вказівник - може.