为什么通过对象传值调用函数时会产生临时对象?
我们先不说编译器优化这样的话题,还有就是哪些情况下会产生临时对象,这个在网上也是一搜一大把的,不需要再解释了。
我就是想问问为什么编译器设计师一定要加个临时变量过渡进去?比如:调用函数fun(x),就不能直接把x赋值给形参吗?
如果从编译器设计人员的角度思考,我自己想了几个原因,大家能否帮忙分析一下?
一、传参时要调用形参的拷贝构造函数,而这时形参还未定义
二、父子函数间不能跨函数操作,但是编译器通过临时变量修改成引用传入,也算跨函数操作呀
三、因为寄存器太少,只能传地址,所以编译器通过建立临时对象传递引用。
不知道各位大侠是否有些自己的看法?给个指引?