Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.81
programina
2049 / 604 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
#1

Что это bool operator== (const CLASS&) const; - C++

10.04.2013, 12:45. Просмотров 2702. Ответов 14
Метки нет (Все метки)

Что это?
C++
class CLASS
{
    public:
    bool operator== (const CLASS&) const;
    ...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.04.2013, 12:45
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Что это bool operator== (const CLASS&) const; (C++):

как правильно понять тип bool ? bool true(const string &str) и что дает это значение ? - C++
задам может глупый вопрос, но прошу ответить. как правильно понять тип bool ? bool true(const string &str) и что дает это...

char operator[](unsigned short offset) const; // что означает const? - C++
Собстенно вопрос уже озвучен :).

ostream &operator<< (ostream &output, const Array &obj) - что означает эта строка? - C++
void Array::getArray() // вывод массива { for (int ix = 0; ix &lt; size; ix++) cout &lt;&lt; setw(5) &lt;&lt; ptr; // вывод элементов...

Почему friend ostrem& operator <<(ostream& outs, const Rational&); - invalid function declaration? - C++
Пытаюсь скомпилировать программу пишет friend ostrem&amp; operator &lt;&lt;(ostream&amp; outs, const Rational&amp;); - invalid function declaration. ...

error: invalid operands of types 'const int*' and 'const int*' to binary 'operator+' - C++
Что означает ошибка в 8 строчке error: invalid operands of types 'const int*' and 'const int*' to binary 'operator+'? ...

int const * const foo(const int* param) const - разъясните значение квалификаторов - C++
int const * const foo(const int* param) const -----1------2----------3----------------4 1: ? 2: делает содержимое массива или...

14
Kastaneda
Jesus loves me
Эксперт С++
4749 / 2953 / 242
Регистрация: 12.12.2009
Сообщений: 7,493
Записей в блоге: 2
Завершенные тесты: 1
10.04.2013, 12:47 #2
Это оператор ==, чтоб можно было делать так
C++
1
2
CLASS a, b;
if (a == b) {}
Или интересует что-то другое?
1
xtorne21st
интересующийся
304 / 275 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
10.04.2013, 12:53 #3
Перегруженный оператор который принимает два параметра, один неявный указaтель this и второй - явный объект класса CLASS. Модификатор const в конце объявления свидетельствует о том, что с принимаемые аргументы не будут модифицироваться.

Добавлено через 2 минуты
Ну и совсем очевидно - возвращаемый тип оператора - bool.
1
programina
2049 / 604 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
10.04.2013, 12:57  [ТС] #4
Kastaneda, xtorne21st, спасибо

пс: спасибки закончились, поэтому скажу спасибо немного позже
0
Kastaneda
Jesus loves me
Эксперт С++
4749 / 2953 / 242
Регистрация: 12.12.2009
Сообщений: 7,493
Записей в блоге: 2
Завершенные тесты: 1
10.04.2013, 12:59 #5
Цитата Сообщение от xtorne21st Посмотреть сообщение
Модификатор const в конце объявления свидетельствует о том, что с принимаемые аргументы не будут модифицироваться.
Нет, в этом случае const говорит о том, что в методе не будут меняться члены класса (т.е. объекта *this). Разрешается изменение членов с квалификатором mutable.
1
programina
2049 / 604 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
10.04.2013, 12:59  [ТС] #6
Цитата Сообщение от Kastaneda Посмотреть сообщение
Это оператор ==, чтоб можно было делать так
C++
1
2
CLASS a, b;
if (a == b) {}
Или интересует что-то другое?
а что с чем сравнивается? данные в классе?
0
xtorne21st
интересующийся
304 / 275 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
10.04.2013, 13:02 #7
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
 
class CLASS
{
    public:
    int int_field;
 
    bool operator== (const CLASS& rhs) const
    {
        return (this->int_field == rhs.int_field);
    }
};
 
int main()
{
    CLASS obj1, obj2;
    obj1.int_field = 10, obj2.int_field = 11;
 
    std::cout << std::boolalpha << (obj1 == obj2) << '\n';
}
1
programina
2049 / 604 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
10.04.2013, 13:02  [ТС] #8
Вернее чем могут отличатся два этих обьекта?
0
xtorne21st
интересующийся
304 / 275 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
10.04.2013, 13:03 #9
Цитата Сообщение от programina Посмотреть сообщение
а что с чем сравнивается? данные в классе?
То, что опишите в теле оператора то и будет сравниваться.
1
Kastaneda
Jesus loves me
Эксперт С++
4749 / 2953 / 242
Регистрация: 12.12.2009
Сообщений: 7,493
Записей в блоге: 2
Завершенные тесты: 1
10.04.2013, 13:03 #10
Цитата Сообщение от programina Посмотреть сообщение
а что с чем сравнивается? данные в классе?
что внутри оператора == напишешь, то и будет сравниваться. Можно вообще захардкодить
C++
1
return false;
тогда любое подобное сравнение
C++
1
if (a == b) {}
всегда будет ложно.
0
programina
2049 / 604 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
10.04.2013, 13:05  [ТС] #11
xtorne21st, спасибо

Добавлено через 55 секунд
Kastaneda, спасибо
0
SummerRain
327 / 326 / 17
Регистрация: 16.12.2012
Сообщений: 544
10.04.2013, 13:08 #12
допустим есть класс

C++
1
2
3
4
5
6
7
class human {
    bool sex;  // мужской - true, женский - false (хаха, как же иначе?)
    int age;
    string race;
    language string;
    ...
};
можно сравнить все члены экземпляра класса в этом операторе

C++
1
2
3
bool operator== (const human& h) const {
    return sex == h.sex && age == h.age && race == h.race;
}
но может быть ты считаешь, что все люди равны независимо от пола и цвета кожи (как бы не так!)
и тебя интересует другой критерий равенства.
Ты хочешь разделить людей на низшую и высшую расу по знанию языка программирования:
низшая раса - это Delphi и PHP;
высшая раса - это, естественно, С++;
Поэтому

C++
1
2
3
bool operator== (const human& h) const {
    return language == h.language;  // одинаковый язык - одинаковая раса
}
Ну вот, перегружай как хочешь.
1
Kastaneda
10.04.2013, 13:12
  #13

Не по теме:

как ты ловко всех поделил

Кликните здесь для просмотра всего текста
Что это bool operator== (const CLASS&) const;

0
SummerRain
327 / 326 / 17
Регистрация: 16.12.2012
Сообщений: 544
10.04.2013, 13:16 #14
Цитата Сообщение от Kastaneda Посмотреть сообщение
Не по теме:
как ты ловко всех поделил
Кликните здесь для просмотра всего текста

Не по теме:

что за няшка?

1
programina
2049 / 604 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
10.04.2013, 13:27  [ТС] #15
Цитата Сообщение от SummerRain;
но может быть ты считаешь, что все люди равны независимо от пола и цвета кожи
точно!

SummerRain, спасибо за подробный ответ

Добавлено через 8 минут

Не по теме:


Цитата Сообщение от Kastaneda Посмотреть сообщение

Не по теме:

как ты ловко всех поделил

Кликните здесь для просмотра всего текста


— ложись спать.
— не могу, снова кошмар приснится.

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.04.2013, 13:27
Привет! Вот еще темы с ответами:

const& и const* в имени функции - C++
Объясните пожалуйста что значит const&amp; и const* в имени и параметрах функции(пример из Вандевурд,Джосаттис): template &lt;typename T&gt; ...

Что при присваивается i в for(const auto& i : iVec1) ? - C++
Есть объявление вектора vector&lt;int&gt; iVec1 = {0,1,2,3,4,5}; Почему следующие два варианта цикла выдают одинаковые результаты ? (на...

Вызов operator[] через operator[] const - C++
Перелистывал Майерса, наткнулся на код, подскажите пожалуйста почему он советует закомментированный вариант кода, не проще сделать как...

Bool & - что это - C++
Что делает здесь амперсанд. bool &amp; hello = test;


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru