如果我在返回函数时添加const或忽略它,我试图理解有什么不同。让我通过一个例子来解释我的问题。
const int foo()
{
return 3;
}
int main()
{
int check;
check=foo();
cout<<"before:"<<check<<endl;
check=1;
cout<<"after:"<<check<<endl;
return 0;
}
到目前为止,我一直认为,因为我编写const foo()我无法更改检查变量,但是我编译它并且没有错误。
我想知道通过在我的foo()函数之前编写const来获得或放松的东西。
提前致谢
答案 0 :(得分:2)
您没有更改变量。你正在改变它的副本。
check=foo();
将foo
返回的值指定给check
。 check
不是const
。
答案 1 :(得分:2)
原始返回类型的const
修饰符将被忽略。
另请参阅此问题:Should I return const objects?
答案 2 :(得分:0)
区别在于编译器警告:
warning: type qualifiers ignored on function return type [-Wignored-qualifiers]
const int foo()
^
请参阅live demo。
这种类型的东西被忽略了,所以没有效果。
答案 3 :(得分:0)
当您尝试返回参考时,它会有所不同。
例如:
int gGlobal;
const int & func()
{
return gGlobal;
}
int main ()
{
//Following statement will give error.
func() = 3;
return 0;
}