非引用const形参为什么可以使用非const实参初始化,请求给予一个简单易懂的回答,最好是有个例子,感谢了

2024-11-27 21:11:32
推荐回答(2个)
回答1:

本质上因为实参传递的方式问题。不管是非引用const形参还是非引用形参,复制形参时并不考虑形参是否为const,因为形参只是实参的副本。在函数体内对形参的修改,都不会影响到实参,即实参的值没有改变。
一个例子:
#include
using namespace std;
/*int foo(int i) // 非引用形参
{
i = i + 1; //唯一的区别在这里,i非const形参,i可以为左值
return i;
}*/
int foo(const int i) // 非引用const形参
{
// i = i+1; //const 形参,i不能使左值
return i+1;
}
main()
{
int i = 1;
cout << foo(i) << "\t"<< i << endl; //实参i的值都不会发生改变
//所以实参是不是const没有关系
}

回答2:

不太明白你的意思,能写一下代码码???