Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string>
- class A
- {
- public:
- A()
- {
- std::cout << "Вызван конструктор объекта класса A" << std:: endl;
- }
- //базовое определение чисто виртуального деструктора для класса A
- virtual ~A() = 0;
- };
- //определение чисто виртуального деструктора класса A для его корректной работы
- A::~A(){};
- class B : public A
- {
- public:
- B()
- {
- std::cout << "Вызван конструктор объекта класса B" << std::endl;
- }
- //перегрузка виртуального деструктора класса B , который унаследовал деструктор у класса A
- ~B() override //ключевое слово для корректоной обработки ошибок, связанных с полиморфизмом
- {
- std::cout << "Вызван деструктор объекта класса B" << std::endl;
- }
- };
- int main(int argc, char *argv[])
- {
- setlocale(LC_ALL, "Rus");
- srand(time(NULL));
- //теперь ,если поменять это на A *b = new B, ничего не изменится, так как эти деструкторы виртуальны
- B *b = new B;
- //этот код(создание объекта класса A) выведет ошибку, так как класс A является абстрактным, потому что в нем содержится чисто виртуальный деструктор
- A a;
- //очистка динамической памяти
- delete b;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement