我有几个与 C++ 中引用的使用有关的问题。
在下面显示的代码中,它是如何工作的,并且在
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
处应该是常量的字符串不会被改变吗?
我已经阅读了有关 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?
我正在尝试获取此引用资料,其中可能遗漏了一些相关的关键内容,因此提出了这些问题。
因此,任何清除此问题的指针都会很有用。
最佳答案
-
- a) 不能,您引用的行不会更改引用
q
,它会更改p
。 - b) 不是文字是常量,但
p
是一个指向文字的指针。 指针可以更改,所指向的内容不能更改。q = "world";
使指针p
指向别的东西。
- a) 不能,您引用的行不会更改引用
你似乎认为这段代码
int i; int &j = i; int k; j = k;
正在重新分配引用,但事实并非如此。 就是把
k
的值赋给i
,j
还是指i
。 我猜这是你的主要误解。
关于c++ - 为什么我可以为引用分配新值,以及如何使引用引用其他内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7181372/