溫馨提示×

C++類的繼承析構(gòu)函數(shù)執(zhí)行

c++
小樊
81
2024-10-31 10:41:55
欄目: 編程語言

在C++中,類的繼承析構(gòu)函數(shù)執(zhí)行是指當(dāng)一個派生類對象被銷毀時,其析構(gòu)函數(shù)會被自動調(diào)用,從而確?;惡团缮愔械馁Y源得到正確釋放

當(dāng)一個類被繼承時,基類的析構(gòu)函數(shù)會在派生類的析構(gòu)函數(shù)之前被調(diào)用。這是因?yàn)榕缮惖奈鰳?gòu)函數(shù)需要首先調(diào)用基類的析構(gòu)函數(shù)來確保基類中的資源得到正確釋放。然后,派生類中的析構(gòu)函數(shù)會被調(diào)用,以釋放派生類中的資源。

以下是一個簡單的示例,展示了C++類的繼承和析構(gòu)函數(shù)執(zhí)行的過程:

#include <iostream>

class Base {
public:
    Base() {
        std::cout << "Base constructor called" << std::endl;
    }

    ~Base() {
        std::cout << "Base destructor called" << std::endl;
    }
};

class Derived : public Base {
public:
    Derived() {
        std::cout << "Derived constructor called" << std::endl;
    }

    ~Derived() {
        std::cout << "Derived destructor called" << std::endl;
    }
};

int main() {
    Derived d; // 創(chuàng)建一個派生類對象
    return 0; // 當(dāng)main函數(shù)結(jié)束時,派生類對象會被銷毀,從而調(diào)用其析構(gòu)函數(shù)
}

輸出結(jié)果:

Base constructor called
Derived constructor called
Derived destructor called
Base destructor called

從輸出結(jié)果可以看出,當(dāng)派生類對象被銷毀時,基類和派生類的析構(gòu)函數(shù)按照逆序被調(diào)用。這樣可以確?;惡团缮愔械馁Y源得到正確釋放。

0