面试宝典之c++虚函数、虚继承

面试宝典之c++虚函数、虚继承

ID:9396716

大小:39.51 KB

页数:16页

时间:2018-04-30

面试宝典之c++虚函数、虚继承_第1页
面试宝典之c++虚函数、虚继承_第2页
面试宝典之c++虚函数、虚继承_第3页
面试宝典之c++虚函数、虚继承_第4页
面试宝典之c++虚函数、虚继承_第5页
资源描述:

《面试宝典之c++虚函数、虚继承》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、虚函数和虚继承及其在内存中布局1.虚函数一般类的布局classA{public:intm_pbl;protected:intm_prt;private:intm_prv;public:voidfun()//不在堆栈中占空间{cout<<"It'sfun."<classAsize(12):1>+---1>0

2、m_pbl1>4

3、m_prt1>8

4、m_prv1>+---1.1单个类1.1.1单个虚函数classA{public:intm_pbl;protected:intm_prt;private:intm_prv;

5、public:voidvirtualf1(){cout<<"It'sf1."<classAsize(16):2>+---2>0

6、{vfptr}//虚表指针2>4

7、m_pbl2>8

8、m_prt2>12

9、m_prv2>+---2>2>A::$vftable@://虚表2>

10、&A_meta2>

11、02>0

12、&A::f12>2>A::f1thisadjustor:01.1.2多个虚函数classA{public:intm_pbl;protected:intm_prt;private:intm_prv;public:voi

13、dvirtualf1(){cout<<"It'sf1."<classAsize(16):1>+---1>0

14、{vfptr}1>4

15、m_pbl1>8

16、m_prt1>12

17、m_prv1>+---1>1>A::$vftable@://同一张表中1>

18、&A_meta1>

19、01>0

20、&A::f11>1

21、&A::f21>1>A::f1thisadjustor:01>A::f2thisadjustor:01.2继承1.2.1不加函数classB:p

22、ublicA{};1>classBsize(16):1>+---1>

23、+---(baseclassA)1>0

24、

25、{vfptr}//同一个指针1>4

26、

27、m_pbl1>8

28、

29、m_prt1>12

30、

31、m_prv1>

32、+---1>+---1>1>B::$vftable@://B的虚表1>

33、&B_meta1>

34、01>0

35、&A::f11>1

36、&A::f21.2.2子类override父类的函数classB:publicA{public:voidf1(){cout<<"It'sf1inB."<classBsize(16):1>

37、+---1>

38、+---(baseclassA)1>0

39、

40、{vfptr}1>4

41、

42、m_pbl1>8

43、

44、m_prt1>12

45、

46、m_prv1>

47、+---1>+---1>1>B::$vftable@:1>

48、&B_meta//B用来标识类1>

49、01>0

50、&B::f1//变成了B的版本1>1

51、&A::f21>1>B::f1thisadjustor:01.2.3子类添加虚函数classB:publicA{public:voidf1(){cout<<"It'sf1inB."<

52、"<classBsize(16):1>+---1>

53、+---(baseclassA)1>0

54、

55、{vfptr}//合成一个表1>4

56、

57、m_pbl1>8

58、

59、m_prt1>12

60、

61、m_prv1>

62、+---1>+---1>1>B::$vftable@:1>

63、&B_meta1>

64、01>0

65、&B::f11>1

66、&A::f21>2

67、&B::f3//添加到虚表的尾部,类标识为B1>1>B::f1thisadjustor:01>B::f3thisadjustor:01.2.4多继承classA{private:intm_data

68、;public:voidvirtualf1(){cout<<"It'sf1."<classCsize(12):1>+---1>

69、+---(baseclassA)1>0

70、

71、{vfptr}1>4

72、

73、m_data1>

74、+---1>

75、+---(baseclassB)1>8

76、

77、{vfptr}//多个指针1>

78、+---1>+---1>1>C::$vftable

79、@A@:1>

80、&C_meta1>

81、01>0

82、&A::f11>1>C::$vftable@B@:1>

83、-81>0

84、&B::f11.3纯虚函数1.3.1只在父类classA{private:intm_data;public:voidvir

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。