Объявление переменной с константой и ссылкой
Вопрос
Меня смущают объявления переменных со ссылками.Я прочитал несколько страниц, и это меня еще больше запутало, поэтому я предпочел спросить здесь.
На собеседовании по C++ мне задали 4 вопроса;кто из них не прав и почему?
(1) int & n;
(2) const int & n=15;
(3) float x; const int & n =x;
Может кто-нибудь объяснить, что не так и почему?
Решение
tl;dr Ссылки должны быть инициализированы при объявлении (непосредственно или при инициализации класса).
int& n;
Это оставляет ссылку n
неинициализированный.Ссылки должны быть инициализированы при объявлении.
const int& n = 15;
Здесь нет ничего плохого.Ссылка на const int
инициализируется 15
.
float x; const int& n = x;
А float
это нормально, но оставлять неинициализированным — плохая идея.Ссылка n
инициализируется в x
(применимы преобразования с плавающей запятой/целым числом), это тоже не лучшая идея.
Другие советы
Ссылка всегда должна быть инициализирована.