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栈中可以容纳任意类型的元素,栈是有上限,提供基本功能,例如栈空,栈满,入栈,出栈,获取栈顶元素

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/168172.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在 Arduino IDE 2.0 中安装 ESP32 板(Windows、Mac OS X、Linux)

有一个新的 Arduino IDE——Arduino IDE 2.0&#xff08;测试版&#xff09;。在本教程中&#xff0c;您将学习如何在 Arduino IDE 2.0 中安装 ESP32 板并将代码上传到板。本教程与 Windows、Mac OS X 和 Linux 操作系统兼容。 据 Arduino 网站称&#xff1a;“ Arduino IDE 2.…

Pytorch常用的函数(四)深度学习中常见的上采样方法总结

Pytorch常用的函数(四)深度学习中常见的上采样方法总结 我们知道在深度学习中下采样的方式比较常用的有两种&#xff1a; 池化 步长为2的卷积 而在上采样过程中常用的方式有三种&#xff1a; 插值 反池化 反卷积 不论是语义分割、目标检测还是三维重建等模型&#xff0…

华为云Ascend310服务器使用

使用华为云服务器 cpu: 16vCPUs Kunpeng 920 内存&#xff1a;16GiB gpu&#xff1a;4* HUAWEI Ascend 310 cann: 20.1.rc1 操作系统&#xff1a;Ubuntu aarch64目的 使用该服务器进行docker镜像编译&#xff0c;测试模型。 已知生产环境&#xff1a;mindx版本为3.0.rc3&a…

说说React render方法的原理?在什么时候会被触发?

一、原理 首先&#xff0c;render函数在react中有两种形式&#xff1a; 在类组件中&#xff0c;指的是render方法&#xff1a; class Foo extends React.Component { render() { return <h1> Foo </h1>; } } 在函数组件中&#xff0c;指的是函…

STM32H743XX/STM32H563XX芯片烧录一次后,再次上电无法烧录

近期在使用STM32H563ZIT6这款芯片在开发板上使用正常&#xff0c;烧录到自己打的板子就遇到了芯片烧录一次后&#xff0c;再次上电无法烧录的问题。 遇到问题需要从以下5点进行分析。 首先看下开发板的原理图 1.BOOT0需要拉高。 2.NRST脚在开发板上是悬空的。这里我建议大家…

ROS 学习应用篇(二)话题Topic学习之话题的发布与订阅

顾名思义&#xff0c;这是一个异步的消息传达过程 首先是消息的发布&#xff0c;接着是消息的订阅 话题发布 由发布者发布一个“消息”的数据结构&#xff0c;再由订阅者订阅这个消息结构。 再开始撰写一段程序之前&#xff0c;我们需要在程序代码中引入库→节点初始化→创…

【数据结构】反射、枚举

⭐ 作者&#xff1a;小胡_不糊涂 &#x1f331; 作者主页&#xff1a;小胡_不糊涂的个人主页 &#x1f4c0; 收录专栏&#xff1a;浅谈数据结构 &#x1f496; 持续更文&#xff0c;关注博主少走弯路&#xff0c;谢谢大家支持 &#x1f496; 反射、枚举 1. 反射1.1 定义1.2 反射…

14 # 手写 debounce 防抖方法

什么是防抖 防抖: n 秒后再去执行该事件&#xff0c;若在 n 秒内被重复触发&#xff0c;则重新计时&#xff0c;这个效果跟英雄联盟里的回城技能差不多。 本质上是优化高频率执行代码的一种手段&#xff0c;目的就是降低回调执行频率、节省计算资源。 应用场景&#xff1a; …

【蓝桥杯 第十三届省赛Java B组】真题训练(A - F)

目录 A、星期计算 - BigInteger B、山 - 暴力判断 字符串 C、字符统计 - 简单哈希 D、最少刷题数 - 排序 思维 二分 分情况讨论 &#xff08;1&#xff09;&#xff08;错误&#xff09;自写哈希表 &#xff08;2&#xff09;正解 E、求阶乘 - 数学思维 二分 F、…

Jupyter Notebook 闪退

造成这个的原因非常非常多&#xff01; 比如什么环境变量没有配置&#xff0c;或者说jupyter和python版本不兼容&#xff0c;库不兼容等等。 但是我呢&#xff0c;以上都不是。 我是因为手残&#xff0c;删掉了不该删的文件&#xff1a; 这个操作就是打开"Anaconda Prom…

Android Studio(项目收获)

取消按钮默认背景色 像按钮默认背景色为深蓝色&#xff0c;即使使用了background属性指定颜色也不能生效。 参考如下的解决方法&#xff1a; 修改/res/values/themes.xml中的指定内容如下&#xff1a; <style name"Theme.TianziBarbecue" parent"Theme.Mater…