Абстрактный класс C ++ концептуально является классом, который не может быть создан, и он должен быть реализован как класс, который имеет одну или несколько чистых виртуальных (абстрактных) функций. Чистая виртуальная функция — это функция, которая должна быть переопределена любым конкретным (т. Е. Не абстрактным) производным классом.
Прежде чем понимать абстрактный класс в C ++, важно знать концепции виртуальных функций как это неотъемлемая часть изучения концепции абстрактных классов в C ++.
Мы не можем создать экземпляр абстрактного класса. Мы можем создать указатель и ссылку на базовый абстрактный класс, указывающий на экземпляр дочернего класса.
Абстрактный класс в C ++
Класс является абстрактным, если он имеет хотя бы одну чистую виртуальную функцию. Чистая виртуальная функция в C ++ может быть указана как функция, которая объявлена только в базовом классе и определена в производных классах. Проще говоря, это можно описать как функции, которые только объявлены, а не реализованы в базовом классе. Эти функции известны как виртуальные функции.
# Синтаксис для объявления виртуальной функции
См. следующий синтаксис.
class class_name {public: virtual return_type function_name () = 0;};
См. следующий пример.
class A {public: virtual void fun_1 () = 0;};
Теперь переходя к абстрактному классу , это своего рода класс, который имеет по крайней мере одну чистую виртуальную функцию, известный как абстрактный класс. Другими словами, если мы объявляем функцию только в базовом классе и не записываем ее реализацию в базовом классе, и мы используем производные классы для написания реализации объявленной функции, то этот класс известен как абстрактный класс.
# Свойства абстрактных классов
- Абстрактные классы не могут иметь объектов.
- Чтобы быть абстрактным классом, он должен иметь хотя бы один виртуальный класс.
- Мы можем использовать указатели и ссылки на абстрактный тип класса.
- Если мы этого не сделаем. не переопределять виртуальную функцию в производном классе, тогда производный класс также становится абстрактным классом.
- Мы можем создавать конструкторы абстрактного класса.
# Класс Abstract в java Vs. Абстрактный класс в C ++
Если мы хотим сделать абстрактный класс в java, мы используем ключевое слово abstract. Точно так же мы можем создавать чистые виртуальные функции, чтобы сделать класс абстрактным.
В C ++ нам не нужно добавлять ключевое слово abstract в качестве базового класса, который имеет хотя бы одну чистую виртуальную функцию, которая считается абстрактным классом.
# Примеры абстрактного класса в C ++
Напишите одну программу, чтобы показать механизм абстрактного класса.
#include с использованием пространства имен std; class A {public: virtual void test () = 0; //объявление виртуальной функции}; class B: public A {public: void test () {coutСм. следующий результат.
![]()
Напишите программу, использующую конструкторы абстрактного класса для нахождения суммы двух чисел и отображения результатов.
#include using namespace std; class A { общедоступные: int a, b, c; виртуальный недействительный тест () = 0; A (int a, int b) {coutСм. следующий результат.
![]()
Теперь напишем последнюю программу. Покажите, что мы не можем создавать объекты абстрактного класса в C ++.
#include using namespace std; class A {public: virtual void test () = 0;}; class B: public A {public: void test () {coutСм. следующий результат.
![]()
Наконец, абстрактный класс in C ++ Example Tutorial:
См. также
Полиморфизм в C ++
Полиморфизм в Java
Перегрузка функций в C ++
Переопределение функций в C ++
Перегрузка операторов в C ++