69,373
社区成员
发帖
与我相关
我的任务
分享
#include<iostream>
using namespace std;
class base
{
int a;
public:
base():a(0){}
virtual void show()
{
(this->a)++;
cout<<" base::show()"<<endl;
cout<<a<<endl;
cout<<this;
}
virtual void put()
{
show();
}
};
class derived:public base
{
int a;
public:
derived(int b):a(b){}
virtual void show()
{
(this->a)++;
cout<<" derived::show()"<<endl;
cout<<a<<endl;
cout<<this;
}
virtual void put()
{
base::show();
}
};
void main()
{
base* pbase=new derived(2222222);
pbase->put();
cout<<endl;
pbase->show();
}
楼主可以添加如下代码测试:
derived d(5);
cout<<"派生类对象总大小:"<<sizeof(d)<<endl<<"虚函表地址:"<<(int*)*((int*)&d)<<endl<<"基类部分成员a = "<<*((int*)(&d)+1)<<endl<<"派生类部分成员a = "<<*((int*)(&d)+2)<<endl;