c++一般继承内存布局

来源:互联网 发布:鸽子淘宝 编辑:程序博客网 时间:2024/06/08 15:24
#include <iostream>
using namespace std;


class A
{
public:
void show()
{
cout<<"A::show()\n";
}
private:
int a1;
};


class B : public A
{
public:
void show(){cout<<"B()\n";}
private:
int b1;
};


class C : public B
{
public:
void show(){cout<<"C()\n";}
private:
int c1;
};


int main()
{
C c;
}
/*
class C size(12):
+---
| +--- (base class B)
| | +--- (base class A)
0      | | | a1
| | +---
4      | | b1
| +---
8      | c1
+---


*/
#if 0
class A1
{
public:
void show()
{
cout<<"A1::show()\n";
}
private:
int a1;
};


class A2
{
public:
void show()
{
cout<<"A2::show()\n";
}
private:
int a2;
};
class B : public A1,public A2
{
public:
void show()
{
cout<<"B::show()\n";
}
private:
int c;
};


int main()
{
B b;


}
class B size(12):
+---
| +--- (base class A1)
0      | | a1
| +---
| +--- (base class A2)
4      | | a2
| +---
8      | c
+---
/*
class B size(8):
+---
| +--- (base class A)
0      | | a
| +---
4      | c
+---
*/


#endif
0 0
原创粉丝点击