Страница 1 из 1

перегрузка =

Добавлено: 02 ноя 2005, 12:11
®B!N
сколько есть вариантов перегрузки оператора =?
как сделать, чтобы при присваивании одного объекта другому, передавалась не ссылка, а переносились все данные?

Зараннее спасибо

Добавлено: 02 ноя 2005, 16:58
DeeJayC
сколько вариантов напишешь, столько и будет.

Код: Выделить всё

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.
}

Добавлено: 02 ноя 2005, 18:19
Absurd

Код: Выделить всё

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

   return *this;  // Assignment operator returns left side.
} 
Вообще-то во всех операторах надо const ставит на правый операнд иначе будет куча запарок с STL

Добавлено: 02 ноя 2005, 21:09
®B!N
Спасибо, с экземплом все стало ясно!
DeeJayC писал(а):сколько вариантов напишешь, столько и будет.
Я просто думал, что это описывается вне класса где-то в таком виде

Код: Выделить всё

void operator=&#40]
и не мог нарыть такой реализации...

Добавлено: 03 ноя 2005, 19:07
DeeJayC
Absurd, а код-то взят из msdn :)