Данные-члены
Данные-члены класса объявляются так же, как переменные. Например, у класса Screen могут быть следующие данные-члены:
#include <string>
class Screen {
string _screen; // string( _height * _width )
string::size_type _cursor; // текущее положение на экране
short _height; // число строк
short _width; // число колонок
};
Поскольку мы решили использовать строки для внутреннего представления объекта класса Screen, то член _screen имеет тип string. Член _cursor– это смещение в строке, он применяется для указания текущей позиции на экране. Для него использован переносимый тип string::size_type. (Тип size_type рассматривался в разделе 6.8.)
Необязательно объявлять два члена типа short по отдельности. Вот объявление класса Screen, эквивалентное приведенному выше:
class Screen {
/*
* _ screen адресует строку размером _height * _width
* _cursor указывает текущую позицию на экране
* _height и _width - соответственно число строк и колонок
*/
string _screen;
string::size_type _cursor;
short _height, _width;
};
Член класса может иметь любой тип:
class StackScreen {
int topStack;
void (*handler)(); // указатель на функцию
vector<Screen> stack; // вектор классов
};
Описанные данные-члены называются нестатическими. Класс может иметь также и статические
данные-члены. (У них есть особые свойства, которые мы рассмотрим в разделе 13.5.)
Объявления данных-членов очень похожи на объявления переменных в области видимости блока или пространства имен. Однако их, за исключением статических членов, нельзя явно инициализировать в теле класса:
class First {
int memi = 0; // ошибка
double memd = 0.0; // ошибка
};
Данные-члены класса инициализируются с помощью конструктора класса. (Мы рассказывали о конструкторах в разделе 2.3; более подробно они рассматриваются в главе 14.)