这段代码是否合法?
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;
}
我看到了两个打印输出,但实际上只应该有一个。我猜测dynamic cast(动态类型转换)可能出现了错误。能否进行这种检查呢?
!
- 463035818_is_not_a_numberdynamic_cast
的行为是否不同? - François Andrieux