このコードがあるとします
class Base{
public:
int getVal();
private:
int a, b;
};
class Derived::public Base{
public:
void printVal();
};
int main(){
Base *b = new Derived();
delete b;
}
仮想デストラクタが物事を適切に削除することは知っていますが、派生クラスに仮想関数とデータメンバーがなくても、(仮想デストラクタがない場合) ベースポインタで削除するのは悪いことですか? これが行われるとどうなりますか?