Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Hàm hủy ảo (Virtual Destructor) trong C++

Khi xóa đối tượng lớp dẫn xuất bằng con trỏ trỏ đến lớp cơ sở, lớp cơ sở nên được định nghĩa với hàm hủy ảo (virtual destructor).

Mã ví dụ

#include <iostream>
using namespace std;

class b {
public:
    b() {
        cout << "Constructing base \n";
    }
    virtual ~b() {
        cout << "Destructing base \n";
    }
};

class d: public b {
public:
    d() {
        cout << "Constructing derived \n";
    }
    ~d() {
        cout << "Destructing derived \n";
    }
};

int main(void) {
    d *derived = new d();
    b *bptr = derived;
    delete bptr;
    return 0;
}

Kết quả đầu ra

Constructing base
Constructing derived
Destructing derived
Destructing base