本质上因为实参传递的方式问题。不管是非引用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没有关系
}
不太明白你的意思,能写一下代码码???