Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.11.2010, 07:52   #1
rommster
Пользователь
 
Регистрация: 05.10.2010
Сообщений: 46
По умолчанию Перегрузка оператора присваивания

Не могу понять зачем нужно перегружать в классе оператор присваивания. Разве недостаточно просто создать конструктор-копировщик? Вот в этом примере в обоих случаях вызывается копировщик и смысла в перегрузке ещё и '=' я не вижу.

Код:
#include <iostream>
using namespace std;

class Time{
public:
	Time(int init_x=0, int init_y=0)
		:x(init_x), y(init_y) {};
	Time(const Time & rhs)
		{cout<<"Copying\n"; x = rhs.x; y = rhs.y;}
	int getX(){return x;}
	int getY(){return y;}
private:
	int x;
	int y;
};



int main()
{
	Time x(7,55);
	Time y(x); // вызывается копировщик
	Time z = y; // тоже вызывается копировщик

	cout<<z.getX()<<':'<<z.getY();

	cout<<endl;
	system("pause");
	return 0;
}
Пример, конечно, примитивный, но может существуют какие-то ситуации, когда без перегрузки '=' не обойтись? Спасибо.
rommster вне форума Ответить с цитированием
Старый 14.11.2010, 08:58   #2
rommster
Пользователь
 
Регистрация: 05.10.2010
Сообщений: 46
По умолчанию

Хотя... Если записать не:
Код:
Time z=x;
а
Код:
Time z; 
z=x;
То сработает не копировщик, а именно оператор присваивания. По ходу начинаю догонять... Подскажите, я в том направлении мыслю?
rommster вне форума Ответить с цитированием
Старый 14.11.2010, 12:47   #3
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

да, в общем, то в том.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Непонятное вызывание оператора присваивания Lotles Общие вопросы C/C++ 5 04.11.2010 13:31
Перегрузка оператора + Jane-sad Помощь студентам 0 05.10.2010 13:52
перегрузка оператора -> alex_alpha Общие вопросы C/C++ 5 23.06.2010 19:07
Перезагрузка оператора присваивания Tanya881103 Общие вопросы C/C++ 4 10.06.2010 15:47