gpt4 book ai didi

C++函数: pass non const argument to const reference parameter

转载 作者:行者123 更新时间:2023-12-03 10:29:14 24 4
gpt4 key购买 nike

假设我有一个接受const引用参数传递的函数,

int func(const int &i)
{
/* */
}

int main()
{
int j = 1;
func(j); // pass non const argument to const reference
j=2; // reassign j
}

这段代码可以正常工作。根据C++入门,传递给该函数的参数如下所示,
int j=1;
const int &i = j;

其中i是j的同义词

我的问题是:如果我是j的同义词,并且我定义为const,则代码是:

const int&i = j

redelcare一个非const变量到const变量?为什么在C++中此表达式合法?

最佳答案

引用是const,而不是对象。它不会改变对象可变的事实,但是您有一个对象名称(j)可以通过它进行修改,而另一个名称(i)则不能通过它进行修改。

对于const reference参数,这意味着main可以修改对象(因为它使用对象的名称j),而func不能修改对象,只要它仅使用对象的名称i即可。 func原则上可以通过使用const_cast创建另一个引用或指向该对象的指针来修改对象,但不能这样做。

关于C++函数: pass non const argument to const reference parameter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9127168/

24 4 0