ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ В C++ (4-Е ИЗДАНИЕ) (часть 6) онлайн

Структуры и классы

Все примеры, рассмотренные нами до сих пор, подтверждали негласный принцип: структуры предназначены для объединения данных, а классы — для объединения данных и функций. На самом деле, в большинстве ситуаций можно использовать структуры так же, как и классы. Формально разница между структурами и клас- сами заключается лишь в том, что по умолчанию все члены класса являются скрытыми, а все члены структуры — открытыми.

Формат, который мы использовали при определении классов, выглядит при- мерно так:

class foo {

  private:     int data1;

  public:     void func();

};

Поскольку ключевое слово private для членов классов подразумевается по умолчанию, указывать его явно не обязательно. Можно определять класс более компактным способом:

 class foo  {

     int data1;    public:      void func();

};

В этом случае поле datal сохранит свою закрытость. Многие программисты предпочитают второй стиль из-за его краткости. Мы же придерживаемся перво- го стиля, поскольку он более понятен.

Если вы хотите при помощи структуры выполнять те же действия, что и с использованием класса, вы можете отменить действие принятого по умолчанию ключевого слова public словом private и расположить открытые поля структуры до слова private, а закрытые поля — после слова private:

struct foo

{

  void func();   private:   int data1;

};

Тем не менее, чаще всего программисты не используют структуры таким образом, а придерживаются правила, о котором шла речь в начале: структуры предназначены для объединения данных, а классы — для объединения данных и функций.

 

20