• C++中的继承


    •  继承的作用:
    • 父类中非保护权限的方法和属性(函数和变量)拷贝至子类(可以简单这么理解,因为有重写和虚函数指针这种东西不好理解,后面的博文会另外介绍)
    • 继承的基本语法:
    1. class 子类名 : 继承方式(权限) 基类名(父类名)
    2. {
    3. }

     简单的实现和测试:

    1. class BasePage
    2. {
    3. public:
    4. void header()
    5. {
    6. cout << "基础框架" << endl;
    7. }
    8. };
    9. class FuncFragment : public BasePage
    10. {
    11. public:
    12. void content()
    13. {
    14. cout << "正文" << endl;
    15. }
    16. };
    17. //继承:
    18. void test5()
    19. {
    20. FuncFragment().header(); //这里访问的是子类继承过来的方法,不是父类的方法
    21. FuncFragment().content();
    22. }

    注意:

    • class中的默认权限为private
    • 父类中的private(私有)成员在子类中无法使用(被继承过去了,也占用空间,但是被隐藏了,无法访问)。
    • 不同继承方式继承带来的区别:
    • public: 父类中所有public成员在子类中为public属性,

            父类中所有protected成员在子类中为protected属性ed

    • protected: 父类中所有public成员和protected成员,在子类中为protected属性
    • private: 父类中所有public成员和protected成员,在子类中为private属性

    • 关于菱形继承问题:
    • 一个基本类:                          动物类
    • 两个子类:                        羊类, 骆驼类
    • 一个孙子类(没有孙子类): 羊驼类

    类,和类继承动物类;羊驼类继承类和

    会导致动物类被羊驼类多次继承

    为了避免这种情况,就有了虚继承的出现

    • 虚继承:可以理解为共享数据(或者理解为复制地址),在子类中更改虚继承的数据时,虚基类中对应的值也会被更改
      1. class Animal //虚基类
      2. {
      3. public:
      4. Animal(){
      5. len = 10;
      6. };
      7. int len;
      8. };
      9. class Sheep : virtual public Animal
      10. {
      11. public:
      12. };
      13. C
      14. class Camel: virtual public Animal
      15. {
      16. public:
      17. };
      18. class CNM : public Sheep, public Camel
      19. {
      20. public:
      21. };
      22. //菱形继承问题:
      23. void test2()
      24. {
      25. CNM sun;
      26. cout << sun.len << endl;
      27. cout << CNM().Sheep::len << endl;
      28. }

      //VStudio 开发人员命令提示符操作:

            进入目标盘符->目标路径->dir查看索引->cl /d1 reportSingleClassLayout类名 文件名.cpp

            可以查看空间使用情况。详情请见黑马c++教程菱形继承章节

  • 相关阅读:
    离线安装wireshark2.6.10
    C++---红黑树介绍及简单实现
    B46 - STM32太阳能充电智能心率监测骑行仪
    策略验证_卖出口诀_三种图线交叉点卖出股票需抢先
    MySQL学习第二部分:索引特性
    信息登记小程序怎么做_扫码等级小程序制作步骤
    Springboot+Vue实现物业管理系统
    WordPress电脑版+手机版自动识别切换主题插件优化版
    SpringMVC学习笔记——2
    Linux定时任务详解
  • 原文地址:https://blog.csdn.net/KamikazePilot/article/details/126150727