是呀,同样学习。知道了一定要告诉我。不过我试了试:
#include
class A
{
public:
virtual void F1()
{
cout<<"A1"<
void F2()
{
cout<<"A2"<
};
class B :public A
{
public:
int i;
B(int _i):i(_i) {};
void F1()
{
cout<<"B1"<
void F2()
{
cout<<"B2"<
set()
{
i = 100;
}
};
int main(int argc, char* argv[])
{
B* pb = (B*)new A();
pb->set();
cout << &(pb->i) << endl;
cout << pb->i << endl;
cin.get();
return 0;
}
在调试的时候发现可能是这样的:编译器根据pb的类型知道了pb有i这个成员变量,但是内存绝对是没有变大的,应该是占用了别处的内存空间,因为pb->i,只是根据pb指向的地方按偏移的位置找到i这个变量的位置,并赋值。
你说的这种情况应该会在运行时报错
http://zhidao.baidu.com/question/123304290.html