Advertisement
Ejejejejejjr

Виртуальный деструктор

Dec 27th, 2020
284
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.29 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3.  
  4.  
  5. class A
  6. {
  7. public:
  8.     A()
  9.     {
  10.         std::cout << "Вызван конструктор объекта класса A" << std:: endl;
  11.     }
  12.     //базовое определение виртуального деструктора для класса A
  13.     virtual ~A()
  14.     {
  15.         std::cout << "Вызван деструктор объекта класса A" << std::endl;
  16.     }
  17. };
  18.  
  19. class B : public A
  20. {
  21. public:
  22.     B()
  23.     {
  24.         std::cout << "Вызван конструктор объекта класса B" << std::endl;
  25.     }
  26.     //перегрузка виртуального деструктора класса B , который унаследовал деструктор у  класса A
  27.     ~B() override  //ключевое слово для корректоной обработки ошибок, связанных с полиморфизмом
  28.     {
  29.         std::cout << "Вызван деструктор объекта класса B" << std::endl;
  30.     }
  31. };
  32.  
  33.  
  34. int main(int argc, char *argv[])
  35. {
  36.     setlocale(LC_ALL, "Rus");
  37.     srand(time(NULL));
  38.    
  39.     //теперь ,если поменять это на A *b = new B, ничего не изменится, так как эти деструкторы виртуальны
  40.     B *b = new B;
  41.    
  42.     //очистка динамической памяти
  43.     delete b;
  44.  
  45.     return 0;
  46. }
  47.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement