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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.06.2018, 19:08   #1
2Lui
Пользователь
 
Аватар для 2Lui
 
Регистрация: 14.03.2017
Сообщений: 68
По умолчанию перегрузка оператора ==

Код:
	bool operator==(const Figure &obj) {
		return  sideCount == obj.sideCount;
	}
//////////main.cpp
Figure** aObj = new Figure*[1];
	aObj[0] = new Figure(1);
	aObj[1] = new Figure(1);
	bool test = aObj[0] == aObj[1]; //false
///////////////////////////////////////////////////////////////////

       Figure a(1);
       Figure b(1);
       bool test = a == b;//true
Почему так?
2Lui вне форума Ответить с цитированием
Старый 25.06.2018, 19:45   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

1. У вас массив на 1 элемент. Куда вы еще пишите?
2.
Код:
bool test = aObj[0] == aObj[1]; //false
Правильно. Создали два разных объекта, два разных участка памяти и, естественно, указатели на объекты разные.
3.
Код:
bool test = a == b;//true
Правильно. Вызвался ваш оператор и сравнил объекты.
p51x вне форума Ответить с цитированием
Старый 25.06.2018, 19:48   #3
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

Цитата:
Сообщение от 2Lui Посмотреть сообщение
Почему так
Потому что в первом случае вы сравниваете указатели, ваш оператор вообще не вызывается.
Figure* и Figure& - это разные вещи.
waleri вне форума Ответить с цитированием
Старый 25.06.2018, 22:50   #4
2Lui
Пользователь
 
Аватар для 2Lui
 
Регистрация: 14.03.2017
Сообщений: 68
По умолчанию

Цитата:
Figure* и Figure&
Насчёт этого тоже думал но нет, не так не так не работает.

Цитата:
Правильно. Создали два разных объекта, два разных участка памяти и, естественно, указатели на объекты разные.
Скорее всего . И что никак нельзя сравнить объекты? может по значению? Ну не знаю варианты есть же какие то?

Последний раз редактировалось 2Lui; 25.06.2018 в 23:12.
2Lui вне форума Ответить с цитированием
Старый 26.06.2018, 00:17   #5
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

Цитата:
Сообщение от 2Lui Посмотреть сообщение
И что никак нельзя сравнить объекты
Можно - по ссылке.
Как сделать из указателя ссылку знаете?
waleri вне форума Ответить с цитированием
Старый 26.06.2018, 00:49   #6
2Lui
Пользователь
 
Аватар для 2Lui
 
Регистрация: 14.03.2017
Сообщений: 68
По умолчанию

Код:
	bool test = &aObj[0] == &aObj[1];
так наверное? если да то не канает тоже(
2Lui вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перегрузка оператора == Alexis_777 Общие вопросы C/C++ 5 19.11.2017 13:28
Перегрузка оператора c++ Arrioh Общие вопросы C/C++ 2 05.01.2013 08:46
Перегрузка оператора == Lapo4ka Общие вопросы C/C++ 4 15.12.2011 01:26
перегрузка оператора ++ nhr Общие вопросы C/C++ 1 04.05.2011 23:32
Перегрузка оператора + z3rg Общие вопросы C/C++ 1 22.03.2009 03:06