垂头丧气到没有数据成员的“外国”类

时间:2013-12-25 20:20:09

标签: c++ downcast

请考虑以下代码:

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是标准版式,BC不包含任何数据成员。

Contra:a既不是B也不是C类型。

1 个答案:

答案 0 :(得分:1)

正式:无效,没有明确定义。在实践中:不聪明。