#include #include using std::cout, std::endl; /* Константные ссылки можно создать, используя ключевое слово const int a = 10; const int& r = a; Это означает, что a нельзя будет изменить по этой ссылке То есть поменять a, используя ссылку r будет нельзя: r += 1; // Ошибка! a += 1; // OK Важным неочевидным отличием константных ссылок от обычных ссылок является то, что обычные ссылки можно инициализировать только объектами, которые уже храняться в памяти (например, переменными). int& r1 = a; // OK int& r2 = 5; // Ошибка Константные ссылки можно инициализировать чем угодно (нужно только чтобы тип совпадал) const int& cr1 = a; // OK const int& cr2 = 5; // OK */ int main() { int a = 10; const int& r = a; int& r1 = 20; // Это не будет компилироваться const int& r2 = 20 // Тут всё ОК } /* Задание: 1) Можно ли инициализировать ссылку таким образом? float& r = std::sqrt(2); Можно ли инициализировать константную ссылку таким образом? const float& r = std::sqrt(2); 2) Пусть есть функция: void printAgeV(int x) { cout << "My age is " << x << " years" << endl; } Можно ли вызвать её так? int a = 10; printAgeV(a) Можно ли вызвать её так? printAgeV(20) 3) Пусть есть функция: void printAgeR(int& x) { cout << "My age is " << x << " years" << endl; } Можно ли вызвать её так? int a = 10; printAgeR(a) Можно ли вызвать её так? printAgeR(20) 4) Пусть есть функция: void printAgeCR(const int& x) { cout << "My age is " << x << " years" << endl; } Можно ли вызвать её так? int a = 10; printAgeCR(a) Можно ли вызвать её так? printAgeCR(20) */