C++每日学习笔记DAY6

1.关系运算符重载
    1.1 重载==和!=运算符
    1.2 根据用户需求可以实现两个自定义数据类型的对比操作
2.函数调用运算符重载
    2.1 可以根据需求实现功能函数,如()重载
    2.2 或者实现加法运算,其应如下:void operator()(int a,int b){return a+b;}
3.不要重载 && 和||
    3.1 原因:重载&&和|| 无法实现短路规则,简单的讲就是无法按照由左到右的顺序依次运行
    3.2 归纳:
        3.2.1 ()、[]、 ->、 =、 这些运算符在重载时只能将其写入成员函数中进行重载
        3.2.2 <<和>>运算符在重载时通常写在全局函数并且配合友元进行重载
4.继承的基本语法
    4.1 语法: class 子类A : 继承方式 父类B
    4.2 父类===基类
    4.3 子类===派生类
    4.4 好处:可以减少重复代码的出现,提高代码可读性
5.继承方式
     5.1 公共继承
        5.1.1 父类中public到子类中public访问权限
        5.1.2 父类中protected 到子类中protected访问权限
        5.1.3 父类中private到子类中访问不到
    5.2 保护继承
        5.2.1 父类中public到子类中protected访问权限
        5.2.2 父类中protected 到子类中protected访问权限
        5.2.3 父类中private到子类中访问不到
    5.3 私有继承
        5.3.1 父类中public到子类中private访问权限
        5.3.2 父类中protected 到子类中private访问权限
        5.3.3 父类中private到子类中访问不到
6.继承中的对象模型
    6.1 父类中的私有属性,子类也会继承到,只不过被编译器给隐藏了,因而访问不到
    6.2 如果要查看对象模型,可以通过开发人员命令提示工具进行查看
    6.3 首先查到开发工具的路径位置:E:\Program Files (x86)\Microsoft Visual  Studio\2017\Community\Common7\Tools
    6.4 再跳转盘符 E:(我在E盘)
    6.5 cd到文件路径下
    6.6 输入cl/d1 reportSingleClassLayout类名 文件名
7.继承中的构造和析构
    7.1 继承中,先调用父类的构造函数,可以这样理解:不先出现父,怎么会有子。父类构造函数 调用后再调用子类构造。析构函数的调用顺序和构造函数顺序是相反的。
    7.2 可以利用初始化列表语法显示制定出调用父类的哪个构造函数
    7.3 子类不会继承父类中的构造函数和析构函数,只有父类自己才能知道如何构造和析构自己的属性
8.继承中的同名成员处理
    8.1 如果子类和父类同时拥有同名成员,优先调用子类成员
    8.2 如果需要调用父类的成员需要通过作用域调用父类成员
    8.3 同名的成员函数,子类会进行隐藏掉父类中同名成员函数的所有版本,如果想要调用父类中的其他同名成员函数版本,加上作用域即可
9.继承中的同名静态成员处理
    9.1 如果子类和父类同时拥有同名成员,优先调用子类成员
    9.2 如果需要调用父类的成员需要通过作用域调用父类成员
    9.3 同名的成员函数,子类会进行隐藏掉父类中同名成员函数的所有版本,如果想要调用父类中的其他同名成员函数版本,加上作用域即可
    9.4 访问方式两种:
        9.4.1 一种方式是通过对象进行访问,例如 A p1;p1.setDate();
        9.4.2 一种方式是通过类名进行访问,例如 A::B::m_A;
10.多继承语法
    10.1 格式为:class 子类A: 继承方法 父类B, 继承方式 父类C
    10.2 如果两个父类中有同名的成员被子类继承后,调用时需要加上作用域进行区分,避免二义性。
11.菱形继承的问题以及解决问题
    11.1 菱形继承:存在一个Animal父类,Sheep和Tuo同时继承Animal,SheepTuo进行多继承,父类Sheep和Tuo
    11.2 存在的问题1:访问父类中的数据,需要加作用域来区分具体数据
    11.3 存在的问题2: 由于菱形继承会导致继承的数据有一份的浪费
    11.4 解决方案:利用--虚继承-- virtual,Animal类属于虚基类
    11.5 在Sheep和Tuo类中继承的内容为vbptr---
        11.5.1 v-- virtual
        11.5.2 b-- base
        11.5.3 ptr-- pointer
    11.6 vbptr是一个指针,该指针指向虚基类表vbtable
    11.7 虚基类表vbtable中有对应的偏移量,通过偏移量可以找到唯一的一份数据

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值