不,你不能直接改变 'Test' 内部的 'index'。
然而,你可能会惊讶地发现,给这个 index
赋值实际上并没有改变它自身。引用本身保持完全不变。它仍然是对某个地方的 int
值的引用。赋值操作实际上修改的是那个引用所指向的 int
值,而不是引用本身。赋值后,它仍然引用着与之前相同的 int
值。
“Test”不可改变,这个说法是正确的。并且上述赋值操作并没有以任何方式改变 Test
结构体。它只是改变了该引用所指向的 int
值。
请注意,即使你对 Test
的引用不是 const
:
void doSth(Test& test) {
在这里没有 const
修饰符,你也无法改变 index
引用。
这是因为,在 C++ 中,一旦引用创建后,就无法更改。它将永久性地作为一个引用存在:
int& index ;
一旦这个 index
构造完成,你就无法对其做任何改变引用本身的动作。给它赋值只会改变它所引用的内容,而不会改变引用本身。
在 C++ 中,所有的引用本质上都是逻辑上的 const
。