C++ の基本クラスと派生クラスのデストラクター

コンストラクターと同様に、デストラクターも継承できません。コンストラクターとは異なり、派生クラスのデストラクターで基本クラスのデストラクターを明示的に呼び出す必要はありません。各クラスにはデストラクターが 1 つだけあり、コンパイラーはプログラマーの介入なしで選択する方法を知っているためです。

さらに、デストラクターの実行順序とコンストラクターの実行順序はまったく逆になります。

  • 派生クラス オブジェクトを作成する場合、コンストラクターの実行順序は継承順序と同じです。つまり、基本クラスのコンストラクターが最初に実行され、次に派生クラスのコンストラクターが実行されます。

  • 派生クラス オブジェクトを破棄する場合、デストラクターの実行順序は継承順序とは逆になります。つまり、派生クラスのデストラクターが最初に実行され、次に基本クラスのデストラクターが実行されます。

詳細については、例を参照してください。

    #include <iostream>
    using namespace std;
    class A{
    public:
        A(){cout<<"A constructor"<<endl;}
        ~A(){cout<<"A destructor"<<endl;}
    };
    class B: public A{
    public:
        B(){cout<<"B constructor"<<endl;}
        ~B(){cout<<"B destructor"<<endl;}
    };
    class C: public B{
    public:
        C(){cout<<"C constr

おすすめ

転載: blog.csdn.net/shiwei0813/article/details/132631325