teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

タイプミスを修正

2021/05/25 17:19

投稿

SaitoAtsushi
SaitoAtsushi

スコア5740

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
  質問者が提示したソースコードの挙動は言語仕様で保証されています。