C++ 开发【深入浅出】笔记02

  1. 多态

    1. 同一种类型的不同表现形式
    2. 基类指针指向基类对象基类对象调用的成员函数,基类指针指向派生类对象则调用派生类得成员函数,这种现象就称为多态
    3. 构成多态的条件
      1. 继承关系
      2. 基类多态函数必须声明为虚函数(virtual)
      3. 派生类必须覆盖(重写)基类的虚函数
      4. 基类指针指向对象(基类、派生类)
    4. 如果一个功能接口需要通过不同的对象有不同的表现形式,使用多态来实现
    5. 实现多态可以用基类指针,或者是基类的引用,使用基类对象是不能实现多态的
  2. 纯虚函数

    1. virtual void func() = 0;   
    2. 没有实现的
    3. 约定接口,派生类需要实现这个接口
    4. 包含纯虚函数的类叫做纯虚类,纯虚类不能被实例化
    5. 举例
      1. 线类、矩形类、长方体类、正方体类
      2. 线类:长度,没有面积和体积的,可以用于限定派生类必须实现面体和体积函数,那么线类就可以将面积,体积声明为纯虚函数
  3. 运算符的重载

    1. 运算的重载本质上就是函数的重载,函数名:operator
    2. 有两种方式:
      1. 全局函数,声明为类的友元(friend)(多用于双目运算符)
        1. friend  TYPE  operator ?(TYPE &,TYPE &);
      2. 类的成员函数(多用于单目运算符)
        1. TYPE operator ?(TYPE &)
    3. 对象在做运算的时候,编译器会自动调用operator运算符
    4. 不可被派生类继承
    5. 重载运算符的规则
      1. 遵循运算符本身功能
      2. 不能改变优先级
      3. .  .*  sizeof  ?:  ::  不支持重载
      4. >>  <<  只能做为全局函数重载  
      5.  =  [ ]   ( )   ->  只能做为类的成员函数重载
      6. ++ --前置后置重载区分
        1. operator++ ( ) 前置
        2. operator++ ( int n)后置   n没有任何含义的,仅仅为了区分
      7. [ ]下标运算符 只读 \ 修改
        1. const type &operator[ ] () const ; 只读
        2. type &operator[ ] () ; 修改
      8. 注意:知道函数功能,才能正确规定函数返回值
  4. 练习01

    1. 定义一个复数类,有实部和虚部,要求支持+-运算,尝试支持++ --运算,还要支持cin读入cout输出     灵活运用this指针
    2. 定义字符串类, 支持字符串+,加法运算就是字符串的拼接,支持=运算,就是字符串的复制,支持==运算,就是字符串的比较(注意深拷贝)支持cin读入cout输出
  5. 温故而知新。。。
  6. 模版template

    1. 为了实现泛型编程,一个函数或者一个类对于参数或者是成员类型,可以实现通用类型
    2. 函数模版
      1. template <typename T> void func(T a);    T   - - - >  TYPE 
      2. T类型就是通用的,在调用时根据传参类型决定函数的传参类型
    3. 类模板
      1. template <typename T , typename T2 ...> class Test  {  };
      2. 类模板的成员函数在类外定义
        1. 一定要带模版头 template <typename T1, typename T2 ....>
      3. 一般函数的声明和定义都写在 .h文件中
    4. 模版中友元函数的声明
      1. 前置声明,声明类和友元函数
      2. 位于上面图片类中
  7. 练习02

    1. 实现动态数组类,要求适应任意类型,支持基本运算,例如 [ ]  = <<
    2. 实现一个模板栈类,Stack栈中可以容纳任意类型的元素,栈是有上限,提供基本功能,例如栈空,栈满,入栈,出栈,获取栈顶元素
  8. STL标准模版库(重中之重,前面这些只是学习语法)

    1. STL标准模板库,主要由容器,算法,迭代器组成的
      1. 算法可以理解为一系列步骤,目标是解决特定问题或执行特定任务,容器则是一种数据结构,它能够存储和管理数据,容器类提供迭代器给算法,算法使用迭代器操作容器,迭代器就是容器和算法之间的桥梁
    2. 模板严格说,实现方式不输入面向对象编程,面向对象三个特征,封装、继承、多态,类模板几乎三大特征都没有
    3. 官方文档:cplusplus.com

  9. 练习03

    1. 总结每一种容器有什么区别,注意非一个容易适配的迭代器类型(向前,随机....)
  10. c++实现俄罗斯方块

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值