我是相當新的節目在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刪除對象(有一個二元運算符,您可能會遇到內存泄漏)。第一種方法很好(看看返回值優化) –