读书人

复制构造函数和临时对象有关问题

发布时间: 2012-03-27 13:44:24 作者: rapoo

复制构造函数和临时对象问题

比如我定义了一个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++对象模型

读书人网 >C++

热点推荐