spr*_*aff 2 c++ inheritance constructor dynamic-cast object-lifetime
以下代码抛出std :: bad_cast
struct Foo {
void foo () {}
};
struct Bar {
Bar () {
dynamic_cast <Foo &> (*this) .foo ();
}
virtual ~ Bar () {}
};
struct Baz : public Foo, public Bar {
};
int main ()
{
Baz b;
}
Run Code Online (Sandbox Code Playgroud)
我记得曾经读过dynamic_cast如何进行实现性能权衡,因为"它遍历了完整的继承格"以便正确评估.编译器在这里需要做的是先强制然后再次向下.
可以进行上述工作还是需要添加
virtual Foo* Bar::as_foo()=0;
?
| 归档时间: |
|
| 查看次数: |
1209 次 |
| 最近记录: |