2 sinat 26447335 sinat_26447335 于 2016.04.12 02:12 提问

为什么一个const属性的返回值可以用 非const 型来接受呢?

const int func() { int j = 8; return j; } int main() {int i = 5 ;i = func(); }
为什么可以翻译通过呢?

2个回答

msdnwolaile
msdnwolaile   2016.04.12 03:05
已采纳

const int func()
说明函数func()的返回值是一个常数,不想让对象再次被修改,因为const一定是先被初始化的
而在主函数中的:i = func(),只能说明是将一个常数值赋值给一个变量,很正常啊!!!

还不懂的话,可以看看这个:http://blog.csdn.net/msdnwolaile/article/details/50049173

msdnwolaile
msdnwolaile 回复sinat_26447335: 嗯嗯,(可以这样理解)说的很有道理,开始我还不太确定用到了临时变量,查了一下资料,才确定了,谢谢啊,也就是说函数的返回过程都是会产生一个临时变量的,就是类似于C++中的临时对象,实质上:函数的返回和传参都是一个赋值的过程,,,
一年多之前 回复
sinat_26447335
sinat_26447335 那个我想问一下等于说是首先把j赋给一个匿名临时变量,这个匿名临时变量被修饰为const,然后再用这个值来复制给I,可以这样理解吗?
一年多之前 回复
curry_du
curry_du   2016.04.12 07:37

由于有const修饰,返回值为整型常量,整型常量还是整型,所以赋值给一个整型变量没问题

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!