Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

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

Код:

	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, 20:45   #2
p51x
Профессионал
 
Регистрация: 15.02.2010
Сообщений: 12,792
Репутация: 2143
По умолчанию

1. У вас массив на 1 элемент. Куда вы еще пишите?
2.
Код:

bool test = aObj[0] == aObj[1]; //false

Правильно. Создали два разных объекта, два разных участка памяти и, естественно, указатели на объекты разные.
3.
Код:

bool test = a == b;//true

Правильно. Вызвался ваш оператор и сравнил объекты.
__________________
Запомните раз и навсегда: помочь != "решите за меня"!
p51x вне форума   Ответить с цитированием
Старый 25.06.2018, 20:48   #3
waleri
Профессионал
 
Регистрация: 13.07.2012
Адрес: Нижний Новгород
Сообщений: 5,574
Репутация: 1777
По умолчанию

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

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

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

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

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

Код:

	bool test = &aObj[0] == &aObj[1];

так наверное? если да то не канает тоже(
2Lui вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перегрузка оператора == Alexis_777 Общие вопросы C/C++ 5 19.11.2017 14: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 04:06


13:29.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru