C++/Class

Материал из Энциклопедия о программировании
Перейти к: навигация, поиск

Класс в C++ — сложный/составной тип данных.

Историческая справка

В C классов не было, но вместо них были структуры. Классы появились именно C++, и являются главным отличием C++ от C. Поэтому про C++ часто говорили, что это «Си с классами». Так его неофициально и называли.

Тип данных

Поскольку класс это тип данных, то имя класса это название создаваемого типа данных.

Наименования

По правилам ООП, методы класса — это его функции. Свойства класса — его переменные.

Различие классов и структур

По-умолчанию все объекты класса имеют тип private в то время как в структурах по-умолчанию тип доступа public. Это единственное отличие класса от структуры.

Правила хорошего тона

За долгие время разработчиками выведены правила хорошего тона при работе с классами, что касаются и C++:

  • Несмотря на то, что для названия класса действуют всё те же общие правила именования идентификаторов в C++, всё же имя класса принято писать с большой буквы.
  • Перед именем класса принято ставить букву «c» от слова «class». Это говорит о том, что это именно класс, а не интерфейс. В C++ на уровне языка нет интерфейсов, поэтому таким префиксом желательно самостоятельно обозначать, что это такое. Поскольку буква идёт первой, то она записывается в верхнем регистре по предыдущему правилу. Напр., СFoo, CBar, CSome и т.д.
  • Перед именем интерфейса принято ставить букву «i» от слова «interface». Это говорит о том, что это именно интерфейс, а не класс. Поскольку буква идёт первой, то она записывается в верхнем регистре. Напр., IFoo, IBar, ISome и т.д.

Модификаторы доступа

К отрытым идентификаторам есть прямой доступ через объект класса, к закрытым доступ может осуществляться только из самого класса.

Наследование

class B : public A {…};

Создание класса B, который наследуется от класса A. При этом все наследуемые элементы от класса A, в классе B будут иметь модификатор доступа public так как после знака наследования (: — двоеточие) стоит модификатор доступа public, и это вне зависимости от того какие модификаторы доступов были у них в классе A.

Множественное наследование

В отличие от C# и Java, в C++ разрешено множественное наследование классов.

Синтаксис такой же как и при обычном наследовании, но каждый следующий наследуемый класс пишется так же после запятой:

class D : public A, privat B, protected C {…};