引用是否会更改引用对象的状态

时间:2011-05-20 20:37:24

标签: c++ reference

我读了

---引用不是指针它是对象本身,引用是一个实体,它是另一个对象的别名。

---引用永远不能代表NULL

---引用变量允许两个变量名称寻址相同的内存位置:

---以后不能引用不同的对象

---引用不是变量,因为变量仅由对象的声明引入。对象是存储区域,在C ++中,引用不必(必然)占用任何存储。

现在,下面的行将变量整数转换为常量整数

const Array& ref = integers

此外我读了this 也说你可以改变指示物的状态。

请建议/澄清。

2 个答案:

答案 0 :(得分:3)

不,它不会转换integers。您现在只有integers的别名,您无法通过该别名进行更改。您仍然可以通过原始名称更改integers

int i = 0;
int const& i_ref = i;
i = 5;
cout << i_ref; // outputs 5

以上考试还说明了如何改变裁判员的状态。

答案 1 :(得分:1)

您无法更改const引用的状态。除此之外你在那里提到的一切都是真的。

例如:

const int& ref = integers;
ref = 5;

将无法编译。

int& ref = integers;
ref = 5;

将编译,它会将存储在整数中的值更改为5。

此外,const引用意味着您无法使用引用更改它引用的对象的值。您仍然可以使用原始变量名称对其进行修改。例如:

const int& ref = integers;
integers = 5;
std::cout<<ref<<", "<<integers<<std::endl;

完全有效并将产生:

5, 5