博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
类多继承及虚继承探研
阅读量:6650 次
发布时间:2019-06-25

本文共 1138 字,大约阅读时间需要 3 分钟。

多继承产生的问题

 
  1. #include <iostream>
  2. using namespace std;
  3. // 多继承产生的问题:如果一个继承的多继承有同一个父类,
  4. // 则父类的构造函数会被调用两次
  5. //
  6. // 多继承,多基类混乱的问题
  7. // 以下代码的结果
  8. /*
  9. 总类 A 构造函数被调用。。。
  10. 类 A1 构造函数被调用。。。
  11. 总类 A 构造函数被调用。。。
  12. 类 A1 构造函数被调用。。。
  13. 类 F 构造函数被调用。。。
  14. */
  15. class A
  16. {
  17. public:
  18. A()
  19. {
  20. cout << "总类 A 构造函数被调用。。。" << endl;
  21. }
  22. };
  23. class A1 :public A
  24. {
  25. public:
  26. A1()
  27. {
  28. cout << "类 A1 构造函数被调用。。。" << endl;
  29. }
  30. };
  31. class A2 :public A
  32. {
  33. public:
  34. A2()
  35. {
  36. cout << "类 A1 构造函数被调用。。。" << endl;
  37. }
  38. };
  39. class F :public A1, public A2
  40. {
  41. public:
  42. F()
  43. {
  44. cout << "类 F 构造函数被调用。。。" << endl;
  45. }
  46. };
  47. int main1()
  48. {
  49. F f;
  50. return 0;
  51. }
#

#虚继承解决多继承产生的问题

 
  1. #include <iostream>
  2. using namespace std;
  3. //
  4. // 使总基类虚继承,可避免因为多继承,多基类混乱的问题
  5. // 以下代码的结果
  6. /*
  7. 总类 A 构造函数被调用。。。
  8. 类 A1 构造函数被调用。。。
  9. 类 A1 构造函数被调用。。。
  10. 类 F 构造函数被调用。。。
  11. 请按任意键继续. . .
  12. */
  13. class AA
  14. {
  15. public:
  16. AA()
  17. {
  18. cout << "总类 A 构造函数被调用。。。" << endl;
  19. }
  20. };
  21. class AA1 : virtual public AA
  22. {
  23. public:
  24. AA1()
  25. {
  26. cout << "类 A1 构造函数被调用。。。" << endl;
  27. }
  28. };
  29. class AA2 :virtual public AA
  30. {
  31. public:
  32. AA2()
  33. {
  34. cout << "类 A1 构造函数被调用。。。" << endl;
  35. }
  36. };
  37. class FF :public AA1, public AA2
  38. {
  39. public:
  40. FF()
  41. {
  42. cout << "类 F 构造函数被调用。。。" << endl;
  43. }
  44. };
  45. int main()
  46. {
  47. FF f;
  48. return 0;
  49. }

转载于:https://www.cnblogs.com/nfking/p/5582664.html

你可能感兴趣的文章
根据字体多少使UILabel自动调节尺寸
查看>>
Discuzee模版社区
查看>>
微信公众号开发简介
查看>>
有人认为“中文编程”是解决中国程序员编程效率的秘密武器,请问它是一个“银弹”吗?...
查看>>
YII 模型model层添加新变量,渲染到视图层
查看>>
dede后台栏目文章问题
查看>>
扩展欧基里德算法模板
查看>>
jqgrid 单元格放超链接文本
查看>>
heartbeat + drbd + nginx
查看>>
UVA458 The Decoder
查看>>
CCF201503-5 最小花费(30分)
查看>>
CCF NOI1145 数字金字塔【DP】
查看>>
HDU5150 Sum Sum Sum
查看>>
UVA11292 HDU1902 POJ3646 The Dragon of Loowater【贪心】
查看>>
python入门知识点(上)
查看>>
ASP.Net页面刷新后自动滚动到原来位置
查看>>
jquery toast消息提示
查看>>
数据结构C语言>3基本链表>3-5链表的结点删除
查看>>
20141114
查看>>
关于如何衡量项目的进度一点思考
查看>>