有什么用途:
static_castdynamic_castconst_castreinterpret_cast(type)valuetype(value)如何决定在哪些特定情况下使用哪个?
任何人都可以告诉我为什么这不编译:
struct A { };
struct B : public A { };
int main()
{
B b;
A* a = &b;
B* &b1 = static_cast<B*&>(a);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
现在,如果你用以下方法替换静态强制转换:
B* b1 = static_cast<B*>(a);
Run Code Online (Sandbox Code Playgroud)
然后它确实编译.
编辑:显然编译器将处理A*和B*作为独立类型,否则这将起作用.问题更多的是为什么这是可取的?