перегрузка =

Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain

Ответить
®B!N
Сообщения: 19
Зарегистрирован: 10 мар 2005, 20:52
Откуда: Ужгород, Украина
Контактная информация:

сколько есть вариантов перегрузки оператора =?
как сделать, чтобы при присваивании одного объекта другому, передавалась не ссылка, а переносились все данные?

Зараннее спасибо
DeeJayC
Сообщения: 497
Зарегистрирован: 17 фев 2004, 11:26
Откуда: Ленинград (который Город на Неве)
Контактная информация:

сколько вариантов напишешь, столько и будет.

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

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.
}
"Особое внимание начинающих аквариумистов хотим обратить на то, что рыбки никогда не спят на спинке!" (c)

viel spass, DeeJayC
Absurd
Сообщения: 1228
Зарегистрирован: 26 фев 2004, 13:24
Откуда: Pietari, Venäjä
Контактная информация:

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

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

   return *this;  // Assignment operator returns left side.
} 
Вообще-то во всех операторах надо const ставит на правый операнд иначе будет куча запарок с STL
2B OR NOT(2B) = FF
®B!N
Сообщения: 19
Зарегистрирован: 10 мар 2005, 20:52
Откуда: Ужгород, Украина
Контактная информация:

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

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

void operator=&#40]
и не мог нарыть такой реализации...
DeeJayC
Сообщения: 497
Зарегистрирован: 17 фев 2004, 11:26
Откуда: Ленинград (который Город на Неве)
Контактная информация:

Absurd, а код-то взят из msdn :)
"Особое внимание начинающих аквариумистов хотим обратить на то, что рыбки никогда не спят на спинке!" (c)

viel spass, DeeJayC
Ответить