c++函数:将非常量参数传递给常量引用参数
c++ function: pass non const argument to const reference parameter
假设我有一个函数,它接受常量引用参数传递,
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
将非常量变量重新定义为常量变量?为什么这个表达式在c++中是合法的?
引用是const,而不是对象。它不会改变对象是可变的这一事实,但对象有一个名称(j
),可以通过它进行修改,而另一个名称是(i
),不能通过它进行更改。
在const-reference参数的情况下,这意味着main
可以修改对象(因为它使用了对象的名称j
),而func
不能修改对象,只要它只使用其名称i
。原则上,func
可以通过用const_cast
创建另一个指向对象的引用或指针来修改对象,但不能。
const int &i = j;
这声明了对常量整数的引用。使用此引用,您将无法更改它引用的整数的值。
您仍然可以使用原始变量名称j来更改值,只是不使用常量引用i。
相关文章:
- 通过常量引用传递参数的矩阵模板类
- 移动类的成员作为常量引用参数传递
- 将非左值作为常量引用参数传递.临时是在本地作用域还是在调用方作用域中创建的?
- 常量引用传递的参数的可变左值引用
- 将文本字符串作为常量字符 * 参数传递会导致代码分析器错误
- 如何在C++中通过命令行参数传递常量 int
- 如何将静态常量字符作为参数传递给函数?
- 优化开关(x),x是作为参数传递的常量数
- 将常量<T>shared_ptr与仅shared_ptr作为<T>参数传递
- 将函数作为参数传递的好方法是:复制、引用、常量引用
- 为什么字符串在函数参数中作为常量字符串传递
- 为const输入参数传递非常量对象
- 在C++中将数组作为方法的常量参数传递
- 何时应通过常量引用传递运算符重载函数的参数
- 将常量参数作为参数传递时出现神秘的错误消息
- 使用常量基元引用且仅基元进行参数传递
- 如何在参数非常量中传递常量指针
- 常量参数与右值参数传递,当内部保存到类私有变量时
- 将非常量参数传递给常量参数
- c++函数:将非常量参数传递给常量引用参数