Абстрактные методы и классы

Абстрактные методы содержат только объявление метода без реализации. Создать экземпляр класса, в котором объявлен абстрактный метод, нельзя. Предполагается, что производный класс должен переопределить метод и реализовать его функциональность. В языке C++ абстрактные методы реализуются с помощью чисто виртуальных методов. Синтаксис объявления абстрактного метода:

virtual <Тип результата> <Название метода>([<Тип> <Название параметра1>
                      [, ..., <Тип> <Название параметраN>]]) = 0;

Если внутри класса существует хотя бы один абстрактный метод, то весь класс является абстрактным. Пример объявления и замещения абстрактного метода приведен в листинге 13.33.

Листинг 13.33. Абстрактные методы и классы

#include <iostream>

class A {
public:
   virtual void func() = 0; // Абстрактный метод
   virtual ~A() {}
};
class B : public A {
public:
   void func() override;    // Замещаем метод
};

void B::func() { std::cout << "B::func()" << std::endl; }

int main() {
   // A a;     // Создать объект абстрактного класса нельзя!
   B b;
   b.func();   // B::func()
   return 0;
}

Учебник C++ (MinGW-W64)
Учебник C++ (MinGW-W64) в формате PDF

Помощь сайту

ЮMoney (Yandex-деньги): 410011140483022

ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов