谁能告诉我为什么这不能编译:
struct A { };
struct B : public A { };
int main()
{
B b;
A* a = &b;
B* &b1 = static_cast<B*&>(a);
return 0;
}
现在,如果您将静态转换替换为:
B* b1 = static_cast<B*>(a);
然后它会编译。
编辑:很明显,编译器将A*
andB*
视为独立类型,否则这将起作用。问题更多是关于为什么这是可取的?