Данные-члены
Данные-члены класса объявляются так же, как переменные. Например, у класса 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.)