У меня есть пара вопросов, связанных с использованием ссылок в С++.
-
В приведенном ниже коде, как он работает и не дает ошибку на строке
q = "world";
?#include <iostream> using namespace std; int main() { char *p = "Hello"; char* &q = p; cout <<p <<' '<<q <<"\n"; q = "World"; //Why is there no error on this line cout <<p <<' '<<q <<"\n"; }
-
Как ссылка q может быть повторно инициализирована на что-то еще?
-
Не является ли строковым литералом,
p = "Hello"
, константой или в пространстве только для чтения? Итак, если мы это сделаем,q = "World";
не будет ли изменена строка в
p
, которая должна быть постоянной?
-
-
Я читал о переменных ссылочного типа С++, поскольку их нельзя повторно инициализировать или переназначить, поскольку они хранятся "внутренне" в качестве постоянных указателей. Таким образом, компилятор выдаст ошибку.
Но как можно переназначить ссылочную переменную?
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?
Я пытаюсь понять эту ссылку и, возможно, пропустил некоторые ключевые вещи, связанные с этими вопросами.
Так что любые указатели, чтобы очистить это, были бы полезны.