Данные-члены класса объявляются так же, как переменные и могут иметь любой тип, кроме самого класса, но могут быть указателями на него. Они не могут быть инициализированы в теле класса, их можно инициализировать с помощью конструктора класса.
Тело функции-члена может быть записано как в теле класса, так и вынесено за его пределы. Те функции-члены, которые записаны непосредственно в теле класса называют встраиваемыми. Преимущество встраиваемых функций-членов в том, что их использование повышает быстродействие программы, из-за того что они вставляются непосредственно в скомпилированную программу, а не вызываются как другие функции. Формат записи встраиваемой функции такой же как и для любой другой функции, только они записываются в теле класса.
Пример:
/*класс для хранения даты и времени*/
class TTime {
private: // спецификатор доступа
int year; //
int month; //
int day; // закрытые данные-члены
int hour; //
int minute; //
public: // спецификатор доступа
void GetTime (int &m, int &d, int &y, int &hr, int &min) //встраиваемая функция-член
|
|
{
m = month;
d = day;
y = year;
hr = hour;
min = minute;
}
void SetTime(int m, int d, int y, int hr, int min); //открытая функция-член
} firstTime, secondTime;
Для записи функций-членов за пределами класса используется следующий формат записи:
<тип> <имя_класса>:: <имя_функции> (<список_параметров>)
{
//тело_функции
}
где операция в виде двух двоеточий - это операция расширения области видимости.
Пример:
void TTime::SetTime(int m, int d, int y, int hr, int min)
{
month = m;
day = d;
year = y;
hour = hr;
minute = min;
}
Встраиваемые функции члены также могут быть вынесены за пределы класса и записаны представленным выше способом, но тогда перед типом функции должно стоять ключевое слово inline.
Пример:
inline void TTime::SetTime(int m, int d, int y, int hr, int min)
{
…
}
Для инициализации членов класса необходимо объявить объект данного класса и только после этого с помощью оператора “->”, для доступа по указателю, или оператора точка (.), для доступа по ссылке, присвоить его членам значения.
Пример:
class TTime {
private:
int year;
int month;
int day;
int hour;
int minute;
public:
void SetTime(int m, int d, int y, int hr, int min);
};
main()
{
TTime now; //объект типа TTime
TTime *tomorrow; //указатель на объект типа TTime
now.SetTime(4,15,2008,15,18); //обращение по ссылке
tomorrow->SetTime(4,16,2008,15,18); //обращение по указателю
cout << “Дата и время установлены”;
return 0;
}
void TTime::SetTime(int m, int d, int y, int hr, int min)
{
month = m;
day = d;
year = y;
hour = hr;
minute = min;
}