このコードは合法ですか?
class Base1 {
};
class Base2 {
public:
virtual ~Base2() {
if (!dynamic_cast<Base1*>(this))
std::cout << "aaaa" << std::endl;
}
Base2() {
}
};
class MyClass: public Base1, public Base2 {
public:
MyClass() {
}
virtual ~MyClass() {
std::cout << "bbb" << std::endl;
}
};
int main() {
MyClass s;
return 0;
}
両方のプリントが表示されますが、1つしか表示されません。動的キャストは間違っていると思います。この種のチェックは可能ですか?
!
dynamic_cast
コンストラクタとデストラクタで異なる動作をしませんか?