金山的一道面试题(考察面向对象和内存模型)
#include <stdio.h>
class A
{
public:
A() {m_a = 1; m_b = 2;}
~A(){};
void fun(){printf("%d%d", m_a,m_b);}
private:
int m_a;
int m_b;
};
class B
{
public:
B(){m_c = 3;}
~B();
void fun() {printf("%d", m_c);}
private:
int m_c;
};
void main()
{
A a;
B *pb = (B*)(&a);
pb->fun();
}
输出的是 1.
为什么呢?