Computer >> Máy Tính >  >> Lập trình >> C ++

Phá hủy ảo bằng shared_ptr trong C ++

Trong hướng dẫn này, chúng ta sẽ thảo luận về một chương trình để hiểu về sự phá hủy ảo bằng cách sử dụng shared_ptr trong C ++.

Để xóa các thể hiện của một lớp, chúng ta định nghĩa hàm hủy của lớp cơ sở là ảo. Vì vậy, nó xóa các trường hợp đối tượng khác nhau được kế thừa theo thứ tự ngược lại mà chúng được tạo ra.

Ví dụ

#include <iostream>
#include <memory>
using namespace std;
class Base {
   public:
   Base(){
      cout << "Constructing Base" << endl;
   }
   ~Base(){
      cout << "Destructing Base" << endl;
   }
};
class Derived : public Base {
   public:
   Derived(){
      cout << "Constructing Derived" << endl;
   }
   ~Derived(){
      cout << "Destructing Derived" << endl;
   }
};
int main(){
   std::shared_ptr<Base> sp{ new Derived };
   return 0;
}

Đầu ra

Constructing Base
Constructing Derived
Destructing Derived
Destructing Base