首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

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

2012-03-27 
复制构造函数和临时对象问题 比如我定义了一个Point类有一个复制构造函数Point(constPoint&b)PointgetPoin

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

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

热点排行