【发布时间】:2014-10-12 05:26:21
【问题描述】:
我知道以下是不好的,但我的印象是类的第一个成员是类的起始地址。错了吗?
class A{
public:
int a;
int b;
};
class B{
public :
int x;
};
int main()
{
B *pb=new B();
A *pa=(A*)pb;
pa->a++;
}
我的印象是pb->x 会增加 1。它总是 true 还是 undefined ?为什么当我们有用户定义的构造函数或虚函数时它会改变?
【问题讨论】:
-
是的。这是坏的!太糟糕了,答案应该是无关紧要的。
-
你的问题没关系!你能做的只是糟糕的设计和大部分未定义的行为。简单的回答:永远不要那样做!它可能今天可以工作,但没有定义它明天可以工作或与任何其他编译器一起工作。
标签: c++ class-structure