复制构造函数和临时对象问题
比如我定义了一个Point类 有一个复制构造函数Point(const Point &b)
Point getPoint()
{
return Point(a) //一个参数的构造函数
}
Point a(getPoint()) ;//这里不会调用赋值构造函数 什么原因? 到底是不是优化的原因。
getPoint()会返会一个临时对象 const Point &b引用一个临时对象不会出问题吧?
临时对象析构是在什么时候 ?
我试了一下 在Point a(getPoint()) 有时执行完之后 它不会马上析构 ,
生存期是不是太长了点。
[解决办法]
临时对象析构是在什么时候 ?
------------------
这个要分情况,有好几个原则。
1,完整表达式求值过程中的最后一个步奏。是临时对象的摧毁。
俩例外:
1,被用来初始化object。
2,临时对象绑定于reference。应直到reference生命结束。或临时对象生命范畴结束。
--------------
具体参照 深度探索c++对象模型