fuy*_*uyi 7 c++ const pass-by-reference
假设我有一个接受const引用参数传递的函数,
int func(const int &i)
{
/* */
}
int main()
{
int j = 1;
func(j); // pass non const argument to const reference
j=2; // reassign j
}
Run Code Online (Sandbox Code Playgroud)
这段代码工作正常.根据C++入门,这个函数传递给这个函数的内容如下,
int j=1;
const int &i = j;
Run Code Online (Sandbox Code Playgroud)
其中i是j的同义词(别名),
我的问题是:如果我是j的同义词,并且我被定义为const,那么代码是:
const int&i = j
将const const变量重新定义为const变量?为什么这个表达式在c ++中是合法的?
Ste*_*sop 16
引用是const,而不是对象.它不会改变对象是可变的这一事实,但是你有一个名称j可以通过它来修改它,而i你可以通过另一个名称()通过它来修改它.
在const引用参数的情况下,这意味着main可以修改对象(因为它使用它的名称j),而func不能修改对象,只要它只使用它的名称,i.原则上func 可以通过创建另一个引用或指针来修改对象const_cast,但不要.
| 归档时间: |
|
| 查看次数: |
14154 次 |
| 最近记录: |