大家讲道理2017-04-17 15:00:34
析构函数
の主な機能は、このクラスのインスタンス オブジェクトが不要になったときにクリーンアップすることです (主にメモリ解放)。基类
もクラスであり、オブジェクトを持つこともできるため、基本クラスのデストラクタは、基本クラス内で開かれたメモリの一部をクリーンアップする役割を果たします。
つまり、派生类
については、メモリ オーバーヘッドが発生する可能性があるため、派生クラスにもコンストラクターが必要です。基底クラスは基底クラス内のメモリ オーバーヘッドのみを認識し、派生クラスは基底クラスのメモリ オーバーヘッドのみを認識します。派生クラス自体は相互に理解していません。ほとんどの継承関係は、基本クラスの拡張関係に基づいています。
, したがって、安全性と管理のため、派生クラスのオブジェクトが破棄されると、継承メカニズムは各レベルでデストラクターを階層的に呼び出します。
基类的内部, 有一些是派生类不了解的.
阿神2017-04-17 15:00:34
各クラスにはデストラクターが 1 つだけあり、コンパイラーはプログラマーの介入なしで選択する方法を知っているため、派生クラスのデストラクターで基本クラスのデストラクターを明示的に呼び出す必要はありません。
さらに、デストラクターとコンストラクターの実行順序もまったく逆です。
派生クラス オブジェクトを作成する場合、コンストラクターの実行順序は継承順序と同じです。つまり、基本クラスのコンストラクターは最初に実行され、次に派生クラスが実行されます。
派生クラスのオブジェクトを破棄する場合、デストラクターの実行順序は継承順序と逆になります。つまり、最初に派生クラスのデストラクターが実行され、次に基本クラスのデストラクターが実行されます。
巴扎黑2017-04-17 15:00:34
1. 派生クラスのデストラクターは基本クラスのデストラクターのみを呼び出しますが、基本クラスのコンストラクターは呼び出しません。あなたの質問は間違っています!
2. なぜそう呼ばれるのでしょうか?派生クラスは、基本クラス部分と派生クラス部分の 2 つの部分で構成されます。コンパイラは、派生クラスのデストラクターを呼び出すときに、基本クラスのデストラクターを自動的に呼び出すのに役立ちます。この戦略により、基本クラスを完全に無視できます。成し遂げる。さらに便利になりました。