请考虑以下代码:
struct A { int m; };
struct B : A { void proc () { /* ... */ };
struct C : A { void proc () { /* ... */ };
A a;
B * b = (B *) &a;
C * c = (C *) &a;
b->proc ();
c->proc ();
这是合法且定义明确的吗?
专业版:A
是标准版式,B
和C
不包含任何数据成员。
Contra:a
既不是B
也不是C
类型。
答案 0 :(得分:1)
正式:无效,没有明确定义。在实践中:不聪明。