c++ 为什么可以为引用指定一个新值,如何引用引用呢?

我有几个与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 =“世界”;使指针p指向别的东西。

你似乎认为这个代码

int i;
int &j = i;
int k;
j = k;

正在重新分配参考文献,但不是。
它将k的值分配给i,j仍然指i。
我猜这是你的主要误会。

翻译自:https://stackoverflow.com/questions/7181372/why-can-i-assign-a-new-value-to-a-reference-and-how-can-i-make-a-reference-refe

转载注明原文:c++ 为什么可以为引用指定一个新值,如何引用引用呢?