我是相当新的节目在C++中,我想知道的东西:C++运算符重载返回指针
每当我看到操作符重载在C++中,它的完成这样的:
#ifndef STONE_H
#define STONE_H
class Stone {
private:
int weight;
public:
.......
Stone operator+(const Stone& s) {
Stone stone;
stone.weight = this->weight + s.weight;
return stone;
}
.......
}
#endif
但当“ +“运算符被调用,它创建一个对象”stone“,并返回这个副本。处理巨大的物体时,这对性能不利?
那岂不是更好地使用这个动态内存,如下面的例子:
Stone * operator+(const Stone& s) {
Stone * stone = new Stone;
stone->weight = this->weight + s.weight;
return stone;
}
还是我看到这错了吗?
在此先感谢
看到这一点:http://stackoverflow.com/questions/ 12953127/what-are-copy-elision-and-return-value-optimization – NathanOliver
谁会释放这些对象?这里'a + b + c'? – StoryTeller
总是使用delete删除对象(有一个二元运算符,您可能会遇到内存泄漏)。第一种方法很好(看看返回值优化) –