Введение в программирование

Объявление и реализация класса в языке С++


Создаваемый класс должен быть объявлен и реализован.

Объявление класса в языке С++ может иметь следующее формальное описание:

class имя_класса : список_базовых_классов { public: // Модификатор доступа относится // ко всем перечисленным после // него членам до следующего // модификатора доступа // Объявление общедоступных членов класса

protected: // Объявление членов класса, доступных // только для производных классов

private: // Объявление защищенных членов класса };

Список базовых классов указывается после имени класса через символ двоеточия (:), разделяется запятыми и может иметь модификаторы доступа.

Например:

class MyClass : public ClassA, public ClassB, private ClassC {};

В языке С++ считается, что если модификатор доступа для класса или члена класса не указан, то по умолчанию предполагается модификатор доступа private (защищенный доступ). Для членов структур, объявляемых ключевым словом struct, по умолчанию модификатор доступа предполагается равным public.

Модификатор доступа базового класса позволяет определить, какие переменные и методы базового класса будут доступны из производного класса. Модификатор доступа, указываемый перед именем базового класса, определяет следующие правила доступа к переменным и методам базового класса из производного класса:

  • public - в производном классе доступны все переменные и методы базового класса с модификаторами доступа public и protected, и эти члены класса имеют те же права доступа;
  • protected - члены базового класса с модификаторами доступа public и protected доступны как protected, а с модификатором доступа private - недоступны.
  • private - члены базового класса с модификаторами доступа public и protected доступны как private, а с модификатором доступа private - недоступны.

Например:

class BaseClass { public: int PublicFunc(); protected: int ProtectedFunc(); private: int PrivateFunc(); }; class DerivedClass1 : public BaseClass { // Наследуемая функция PublicFunc доступна // как public // Наследуемая функция ProtectedFunc // доступна как protected }; class DerivedClass2 : private BaseClass { // Наследуемая функция PublicFunc доступна // как private // Наследуемая функция ProtectedFunc // доступна как private }; int main() { }

В теле объявления класса указываются модификаторы доступа, описывающие права доступа для переменных и методов класса:

  • модификатор доступа относится ко всем перечисленным после него членам до следующего модификатора доступа;
  • один и тот же модификатор доступа может указываться несколько раз;
  • после модификатора доступа ставится символ двоеточие;
  • если модификатор доступа не указан, то по умолчанию предполагается private.

Для доступа к членам класса используется операция принадлежности ::, указываемая после идентификатора класса. Для доступа к членам экземпляра класса используются операции . и ->.

Для доступа к объекту самого класса внутри метода члена класса используется ключевое слово this.

Например:

class A { public: int i; Func1();} A:: Func1() { return this->i; } // this - указатель класса A



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