Я хочу убедиться, что правильно понимаю pass-by-value vs pass-by-reference. В частности, я рассматриваю префикс/постфиксные версии оператора increment ++
для объекта.
Предположим, что мы имеем следующий класс X
:
class X{
private:
int i;
public:
X(){i=0;}
X& operator ++ (){ ++i; return *this; } //prefix increment
X operator ++ (int unused){ //postfix increment
X ret(*this);
i++;
return ret;
}
operator int(){ return i; } //int cast
};
Прежде всего, правильно ли я применил операторы приращения префикса/постфикса?
Во-вторых, насколько эффективно память является оператором постфикса, по сравнению с префиксом? В частности, сколько экземпляров объекта X
создается при использовании каждой версии оператора?
Объяснение того, что происходит с возвратом по ссылке и возвратом по значению, может помочь мне понять.
Изменить: например, со следующим кодом...
X a;
X b=a++;
... есть а и b теперь псевдонимы?