Информатика и технология программирования
В качестве примера рассмотрим переопределение
В качестве примера рассмотрим переопределение стандартных операций над датами:
//------------------------------------------------------bk73-03.cpp
//------Переопределение операций в классе "дата"
static int days[]={ 0,31,28,31,30,31,30,31,31,30,31,30,31};
class dat
{
int day,month,year;
public:
void next(); // Элемент-функция вычисления
// следующего для
dat operator++(); // Операция ++
dat operator+(int); // Операция "дата + целое" с передачей
// первого операнда через this
// Операция с явной передачей
friend dat operator+(int,dat); // всех аргументов по значению
dat(int=0,int=0,int=0);
dat(char *); //
~dat(); //
}; //
//------ Функция вычисления следующего дня -----------------
// Используется ссылка на текущий объект this,
// который изменяется в процессе операции
//----------------------------------------------------------
void dat::next()
{
day++;
if (day > days[month])
{
if ((month==2) && (day==29) && (year%4==0)) return;
day=1; month++;
if (month==13)
{
month=1; year++;
}
}
}
//------ Операция инкремента даты -------------------------
// 1. Первый операнд по указателю this
// 2. Возвращает копию входного объекта (операнда)
// до увеличения
// 3. Соответствует операции dat++ (увеличение после
// использования)
// 4. Замечание: для унарных операций типа -- или ++
// использование их до или после операнда не имеет
// значения (вызывается одна и та же функция).
//--------------------------------------------------------
dat dat::operator++()
{ // Создается временный объект
dat x = *this; // В него копируется текущий объект
dat::next(); // Увеличивается значение текущего объекта
return(x); // Возвращается временный объект по
} // значению
//------ Операция "дата + целое" --------------------------
// 1. Первый операнд по указателю this
// 2. Входной объект не меняется, результат возвращается
// в виде значения автоматического объекта x
//---------------------------------------------------------
Содержание
Назад
Вперед
Fore
kc
.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий