Другие языки программирования и технологии
Помогите с переопределением операторов в C++
по условию задачи, в классе Time необходимо только переопределить в классе операторы <, > (ничего другого не задано) задачу решил ниже - такое переопределение правильно?? или нужно как-то иначе сделать? Time& operator > (const Time&) { //переопределение операции ">" return *this; } Time& operator< (const Time&) { //переопределение операции "<" return *this; } Всем ОГРОМНОЕ СПАСИБО заранее! =)
class MyClass
{
public:
bool operator <(const MyClass &a) const
{
(если *this меньше a) return true;
// что *this меньше a определяешь сравнивая переменные-члены класса
return false;
}
bool operator>(const MyClass &a) const
{
(если *this больше a) return true;
return false;
}
};
или написать оператор не функцию-член класса
bool operator>(const MyClass &a, const MyClass &b)
{
return ( a больше b );
// что a больше b определяешь сравнивая начинку объектов a и b
}
{
public:
bool operator <(const MyClass &a) const
{
(если *this меньше a) return true;
// что *this меньше a определяешь сравнивая переменные-члены класса
return false;
}
bool operator>(const MyClass &a) const
{
(если *this больше a) return true;
return false;
}
};
или написать оператор не функцию-член класса
bool operator>(const MyClass &a, const MyClass &b)
{
return ( a больше b );
// что a больше b определяешь сравнивая начинку объектов a и b
}
wtf?
Что это за *****ая ***та? о_О
bool operator > (const Time& a, const Time& b) { //переопределение операции ">"
return a.значение>b.значение;
}
"<" аналогично. Вроде ничего не напутал... и хватит таких вопросов в 2 часа ночи, ок?
a.значение - этьо поле объекта класса, по которому производим сравнение
И "переопределение" называется перегрузкой по-человечески
Кстати да, я немного не прав. Ты можешь перегружать > и < как тебе в голову взбредет, но если ты хочешь что бы перегрузка именно сравнивала два объекта класса - юзай мой код
Что это за *****ая ***та? о_О
bool operator > (const Time& a, const Time& b) { //переопределение операции ">"
return a.значение>b.значение;
}
"<" аналогично. Вроде ничего не напутал... и хватит таких вопросов в 2 часа ночи, ок?
a.значение - этьо поле объекта класса, по которому производим сравнение
И "переопределение" называется перегрузкой по-человечески
Кстати да, я немного не прав. Ты можешь перегружать > и < как тебе в голову взбредет, но если ты хочешь что бы перегрузка именно сравнивала два объекта класса - юзай мой код
Вообще тут подразумевается сравнение - т. е. результат должен быть bool
Я забыл
"... пишет что слишком много параметров для данной функции" - если перегружаемый оператор является членом класса, ему может быть передан только 1 параметр (объект стоящий справа от оператора) , а объект стоящий слева (то есть объект который вызывает перегруженный оператор) передается неявно.
Похожие вопросы
- Оператор присваивания C++
- Помогите исправить ошибку в программе (c++).
- помогите решить задачи оператор switch решение нужно visual studio (C)
- помогите с условным оператором в Pascal
- Перегрузка оператора в C++
- оператор if C#
- Помогите новичку, объясните разницу между C, C++ И C#. и Посоветуйте книгу/видеоуроки или т. п для обучения основ
- программа с помощью оператора case (C++)
- Пожалуйста помогите разобраться с даним кодом C++. Тема : Односвязание списки
- Задание по оператору выбора C++