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

复制析构函数执行次数解决方法

2012-03-31 
复制析构函数执行次数为什么这种情况下复制三个实际参数给a,b 和c需要3 0 0 0次操作???C/C++ codetemplate

复制析构函数执行次数
为什么这种情况下复制三个实际参数给a,b 和c需要3 0 0 0次操作???


C/C++ code
template<class T>T Abc(T a, T b, T c){return a+b+b*c+(a+b-c)/(a+b)+4;}假定数据类型为用户自定义的M a t r i x,那么它的复制构造函数将负责复制其所有元素,而析构函数则负责逐个释放每个元素(假定Matrix 已经定义了操作符+,*和/)。[color=#0000FF]如果我们用具有1 0 0 0个元素的Matrix 作为实际参数来调用函数A b c,那么复制三个实际参数给a,b 和c将需要3 0 0 0次操作。[/color]当函数A b c返回时,其析构函数又需要花费额外的3 0 0 0次操作来释放a,b和c。


[解决办法]
传引用做参数就可避免复制
[解决办法]
楼上正解,其返回值也可以作为引用传入,避免调用构造和析构函数
[解决办法]
返回值优化(Return Value Optimization,简称RVO)

热点排行