c++ 强制类型转换 问题

2025-05-06 16:06:17
推荐回答(3个)
回答(1):

是呀,同样学习。知道了一定要告诉我。不过我试了试:
#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这个变量的位置,并赋值。

回答(2):

你说的这种情况应该会在运行时报错

回答(3):

http://zhidao.baidu.com/question/123304290.html