15. 类的内存结构

一.无虚继承

1.单个类,无虚函数

按成员定义的顺序排列

B::member1

B::member2

 

2.单个类,有虚函数

虚表指针在偏移0

__vfptr

B::member1

B::member2

 

3.单继承,无虚函数

先父类,再子类

B::member1

B::member2

D::member1

D::member2

 

4.单继承,有虚函数

虚表指针在偏移0处,再父类,再子类

__vfptr

B::member1

B::member2

D::member1

D::member2

 

 

5.多继承,无虚函数

按继承列表的顺序,先所有父类,再子类

A::member1

A::member2

B::member1

B::member2

D::member1

D::member2

 

 

6.多继承,有虚函数

 

 

 

 

二.有虚继承

1.单虚继承,无虚函数

 

 

 

 

2.单虚继承,有虚函数

 

 

 

 

3.菱形继承,无虚函数

 

 

 

 

4.菱形继承,有虚函数

 

 

 

 

posted @ 2020-05-24 09:36  八转达人  阅读(228)  评论(0)    收藏  举报