次のコードを考えてみましょう。
#include <iostream>
struct A{ virtual void foo(){ } };
struct B : A { virtual void foo(){ } };
A *a = new B;
int main()
{
delete a; //UB?
}
意図的に仮想デストラクタを定義しませんでした。コンパイラは UB の原因に関するメッセージを出力しましたが、それは本当ですか?
次のコードを考えてみましょう。
#include <iostream>
struct A{ virtual void foo(){ } };
struct B : A { virtual void foo(){ } };
A *a = new B;
int main()
{
delete a; //UB?
}
意図的に仮想デストラクタを定義しませんでした。コンパイラは UB の原因に関するメッセージを出力しましたが、それは本当ですか?