Skip to main content
 首页 » 编程设计

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

2024年11月01日10yxwkf

假设我有一个接受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创建另一个引用或指向该对象的指针来修改对象,但不能这样做。