Поделиться через


Назначение

Оператор присваивания (=) является, строго говоря, бинарным оператором. Его объявление идентично объявлению любого другого бинарного оператора, со следующими исключениями:

  • Он должен быть нестатической функцией-членом. Никакой оператор operator= не может быть объявлен как функция, не являющаяся членом.

  • Он не наследуется производными классами.

  • Компилятор может создавать для типов классов функции operator= по умолчанию, если они не существуют. (Дополнительные сведения о функциях operator= по умолчанию см. в разделе Почленное присваивание и инициализация.)

В следующем примере показано, как объявить оператор присваивания:

// assignment.cpp
class Point
{
public:
   Point &operator=( Point & );  // Right side is the argument.
   int _x, _y;
};

// Define assignment operator.
Point &Point::operator=( Point &ptRHS )
{
   _x = ptRHS._x;
   _y = ptRHS._y;

   return *this;  // Assignment operator returns left side.
}

int main()
{
}

Обратите внимание, что указанный аргумент является правой частью выражения. Оператор возвращает объект для сохранения поведения оператора присваивания, который после завершения присваивания возвращает значение левой части. Это позволяет писать операторы следующего вида:

pt1 = pt2 = pt3;

См. также

Ссылки

Перегрузка операторов