С++ для начинающих


Данные-члены


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



Содержание раздела