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

Перегрузка оператора в C++

Радион Ким
Радион Ким
108
Смысл перегрузки оператора + в том, что добавляя к объекту число, ты получаешь какой-то результат. Логически было бы предложить, что имея какую-то дату и добавив к ней какое-нибудь число, ты получишь совсем новую дату. Старая дата как была 10 июня 1985года. так и осталась. По-этому логично создать такую перегрузку. Так как у тебя в классе самый мелкий элемент день, то и добавлять будем дни.
class CDate //у тебя класс содержит только дату, так зачем ему придумывать закрученное имя
{

CDate &operator+(int i)
{
CDate temp; //создали временный объект
temp=*this; //записали в него данные из текущего объекта (а ещё лучше в классе реализовать оператор копирования)
temp.m_day+=i; //добавили дни
return temp; вернули новую дату
}
};
В вызывающем коде пишешь так
CDate d1,d2;
d1.SetDate("5.04.2005"); //у тебя такой ф-ции нет, это я просто так написал, то есть присвоили какието значения
d2=d1+15; //получили новую дату 20.04.2005
Конечно в перегрузке тебе нужно переводить при необходимости дни в месяцы и года. Но это только схема.
Darkhan Kalibekov
Darkhan Kalibekov
9 759
Лучший ответ
многабукав.
перегружается плюс, например, вот так:

как видишь при перегрузке плюсика - фигурируют всего три переменные,
как и при обычной записи: C = A + B
C - это у нас в ретурне.
A - объект вызывающий функцию.
тоесть у нему можно обращаться через this
B - аргумент функции
------------------------------
если что пиши в агент - помогу
Wladimir Mamedow
Wladimir Mamedow
873