Другие языки программирования и технологии

Помогите с переопределением операторов в C++

по условию задачи, в классе Time необходимо только переопределить в классе операторы <, > (ничего другого не задано) задачу решил ниже - такое переопределение правильно?? или нужно как-то иначе сделать? Time& operator > (const Time&) { //переопределение операции ">" return *this; } Time& operator< (const Time&) { //переопределение операции "<" return *this; } Всем ОГРОМНОЕ СПАСИБО заранее! =)
Максон 48
Максон 48
22
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
}
Алексей Щербина
Алексей Щербина
21 360
Лучший ответ
wtf?
Что это за *****ая ***та? о_О
bool operator > (const Time& a, const Time& b) { //переопределение операции ">"
return a.значение>b.значение;
}
"<" аналогично. Вроде ничего не напутал... и хватит таких вопросов в 2 часа ночи, ок?
a.значение - этьо поле объекта класса, по которому производим сравнение

И "переопределение" называется перегрузкой по-человечески

Кстати да, я немного не прав. Ты можешь перегружать > и < как тебе в голову взбредет, но если ты хочешь что бы перегрузка именно сравнивала два объекта класса - юзай мой код
Vlad Velichko
Vlad Velichko
15 097
Вообще тут подразумевается сравнение - т. е. результат должен быть bool
Я забыл
"... пишет что слишком много параметров для данной функции" - если перегружаемый оператор является членом класса, ему может быть передан только 1 параметр (объект стоящий справа от оператора) , а объект стоящий слева (то есть объект который вызывает перегруженный оператор) передается неявно.