a) Как можно повторно инициализировать ссылку q на что-то еще?
Это не может быть!
Переменная ссылки остается псевдонимомк которому он был инициализирован во время создания.
b) Не строковый литерал, p = "Hello", константа / в пространстве только для чтения.Поэтому, если мы это сделаем,
Нет, это не так.
char* &q = p;
Здесь q
является ссылкой на указатель типа char p
.Строка здесь является константой, указатель не является указателем, она может указывать на другую строку, и ссылка на этот указатель является псевдонимом, а не строковым литералом, поэтому он действителен.
c)Второй вопрос, который у меня есть, я читал о переменных ссылочного типа C ++, поскольку они не могут быть переинициализированы / переназначены, поскольку они хранятся «внутри» как указатели констант.Таким образом, компилятор выдаст ошибку.
int i;
int &j = i;
int k;
j = k; //This should be fine, but how we reassign to something else to make compiler flag an error
Не переназначает ссылку.это изменяет значение переменной, к которой это был псевдоним.
В этом случае значение i
изменяется на k