回答編集履歴
1
タイプミスを修正
answer
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
言語仕様では[デストラクタは仮想として宣言された基本クラスのデストラクタをオーバーライドします](https://timsong-cpp.github.io/cppwp/n3337/class.virtual#6)、また、その[デストラクタは仮想基本クラスのデストラクタを呼び出します](https://timsong-cpp.github.io/cppwp/n3337/class.dtor#8)。
|
2
2
|
|
3
|
-
つまりこの場合は `middle::~middle` は `virtual_base::virtual_base` をオーバーライドしますし、 `child:~child` は `middle::~middle` をオーバーライドします。 そして `child:~child` は `middle::~middle` を呼出し、`middle::~middle` は `virtual_base::virtual_base` を呼び出すことは保証されます。
|
3
|
+
つまりこの場合は `middle::~middle` は `virtual_base::~virtual_base` をオーバーライドしますし、 `child:~child` は `middle::~middle` をオーバーライドします。 そして `child:~child` は `middle::~middle` を呼出し、`middle::~middle` は `virtual_base::~virtual_base` を呼び出すことは保証されます。
|
4
4
|
|
5
5
|
質問者が提示したソースコードの挙動は言語仕様で保証されています。
|