Я довольно новыми для программирования на 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 * 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
Всегда создавайте пары с удалением (с бинарным оператором, который, скорее всего, запускается в утечку памяти). Первый подход просто хорош (взгляните на оптимизацию возвращаемых значений) –