- 论坛徽章:
- 0
|
情况:
CNumber a, b;并且a, b已经初始化完毕。
CNumber的拷贝构造,以及操作符=和+=已经完成。
实际上,可以把 拷贝构造函数 和 操作符= 效率相当,
因为如果CNumber这个类对象同样的初始化,如果一个占用很多资源,那么另一个函数也会。
现在要计算 a + b 保存到c。
CNumber c = a + b;
或者
CNumber c;
add(a, b, c);
问题:
发现
c = a + b;
效率较差。想改进之,望高手指点。
-
- CNumber operator+(const CNumber &a, const CNumber &b)
- {
- CNumber c = a; // 拷贝构造 1
- c += b;
- return c; // 拷贝构造 2
- }
- CNumber c = a + b; // 拷贝构造 3
复制代码
假设我这样:
- void add(const CNumber &a, const CNumber &b, CNumber &c)
- {
- c = a; // 拷贝构造 1
- c += b;
- }
- CNumber c; // 默认构造 2
- add(a, b, c);
复制代码
似乎add可一省去1次拷贝构造,
[ 本帖最后由 spibit 于 2007-7-26 22:15 编辑 ] |
|