Реферат: Объективное программирование
dat a;
do
{
scanf("%d%d%d", &a.day, &a.month, &a.year);
}
while(a.TestData() ==0);
a.PlusData(17);
}
//------------------------------------------------------- Как видно из примера, в качестве элементов структуры могут
выступать функции. Такие элементы-функции имеют следующие особенности:
- тело функции может быть определено в самой структуре (функция PlusData). В этом случае функция имеет стандартный вид;
- в определении структуры дается только прототип функции(заголовок с перечислением типов формальных параметров). Определение самой функции дается отдельно, при этом полное имя функции
имеет вид
<имя структуры>::<имя функции>
- в теле фукции неявно определен один формальный параметр с
именем this - ссылка на структуру, для которой вызывается функция
(В нашем примере это будет struct dat *this ). Поля этой структуры доступны через явное использование этой ссылки
this->month = 5;
this->day++;
или неявно
month = 5;
day++;
- для переменной, имеющей тип некоторой структуры, вызов
функцииэлемента этой структуры имеет вид
<имя переменной>.<имя функции> ( <список параметров> )
2.4. Переопределение функций
--------------------------- В Си++ возможно определение нескольких функций с одинаковым
именем, но с разными типами формальных параметров. При этом компилятор выбирает соответствующую функцию по типу фактических параметров. Переопределяемую функцию необходимо объявить с ключевым
словом overload: