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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

自动驾驶学习笔记(八)——路线规划

#Apollo开发者# 学习课程的传送门如下&#xff0c;当您也准备学习自动驾驶时&#xff0c;可以和我一同前往&#xff1a; 《自动驾驶新人之旅》免费课程—> 传送门 《Apollo Beta宣讲和线下沙龙》免费报名—>传送门 文章目录 前言 路线规划 路由元素 路径搜索 最优…

选择排序与堆排序

&#x1f389;个人名片&#xff1a; &#x1f43c;作者简介&#xff1a;一名乐于分享在学习道路上收获的大二在校生 &#x1f43b;‍❄个人主页&#x1f389;&#xff1a;GOTXX&#x1f43c;个人WeChat&#xff1a;ILXOXVJE &#x1f43c;本文由GOTXX原创&#xff0c;首发CSDN&…

物联网AI MicroPython学习之语法uzlib解压缩

学物联网&#xff0c;来万物简单IoT物联网&#xff01;&#xff01; uzlib 介绍 uzlib 模块解压缩用DEFLATE算法压缩的二进制数据 &#xff08;通常在zlib库和gzip存档器中使用&#xff09;&#xff0c;压缩功能尚未实现。 注意&#xff1a;解压缩前&#xff0c;应检查模块内可…

Django框架FAQ

文章目录 问题1:Django数据库恢复问题2:null和blank的区别问题3:Django创建超级用户报错问题4:Django同源策略 问题1:Django数据库恢复 问题: 从仓库拉下来的Django项目,没有sqlite数据库和migrations记录,如何通过model恢复数据库 解决方法: # 步骤1:导出数据 # 不指定 ap…

SQL注入漏洞:CMS布尔盲注python脚本编写

SQL注入漏洞:CMS布尔盲注python脚本编写 文章目录 SQL注入漏洞:CMS布尔盲注python脚本编写库名爆破爆破表名用户名密码爆破 库名爆破 import requests #库名 database"" x0 while requests.get(urlf"http://10.9.47.77/cms/show.php?id33%20and%20length(data…

【C++】函数指针 ① ( 函数三要素 | 函数类型 | 函数指针类型 | 函数类型重命名 )

文章目录 一、函数类型 和 函数指针类型1、函数三要素2、函数类型3、函数指针类型4、函数类型重命名 二、代码示例 - 函数类型重命名1、代码分析2、完整代码示例 一、函数类型 和 函数指针类型 1、函数三要素 函数原型有三个重要要素 : 函数名称 : 使用 标识符 为函数命名 ; 用…

rasa train nlu详解:1.1-train_nlu()函数

本文使用《使用ResponseSelector实现校园招聘FAQ机器人》中的例子&#xff0c;主要详解介绍train_nlu()函数中变量的具体值。 一.rasa/model_training.py/train_nlu()函数   train_nlu()函数实现&#xff0c;如下所示&#xff1a; def train_nlu(config: Text,nlu_data: Op…

Fortran 中的指针

Fortran 中的指针 指针可以看作一种数据类型 指针存储与之关联的数据的内存地址变量指针&#xff1a;指向变量数组指针&#xff1a;指向数组过程指针&#xff1a;指向函数或子程序指针状态 未定义未关联 integer, pointer::p1>null() !或者 nullify(p1) 已关联 指针操作 指…

python工具HIKVISION视频编码设备接入网关任意文件下载

python工具 构造payload /serverLog/downFile.php?fileName../web/html/serverLog/downFile.php漏洞证明 文笔生疏&#xff0c;措辞浅薄&#xff0c;望各位大佬不吝赐教&#xff0c;万分感谢。 免责声明&#xff1a;由于传播或利用此文所提供的信息、技术或方法而造成的任何…

Ansible命令使用

ansible ansible的命令 ansible命令模块Pingcommand 模块shell 模块copy 模块file 模块fetch 模块cron 模块yum 模块service 模块user 模块group 模块script 模块setup 模块get_url模块stat模块unarchive模块unarchive模块 ansible的命令 /usr/bin/ansible  Ansibe AD-Hoc 临…

【数据结构】归并排序

#include<iostream>using namespace std;void Merge(int* arr,int left,int right,int mid, int*& tmparr) {int begin1 left, end1 mid;int begin2 mid 1, end2 right;int tmpi left;//下面合并两个数组为一个有序数组&#xff08;升序&#xff09;&#xff1…

Spring Cloud学习(六)【统一网关 Gateway】

文章目录 网关的功能搭建网关服务路由断言工厂Route Predicate Factory路由过滤器 GatewayFilter过滤器执行顺序跨域问题处理 网关的功能 网关功能&#xff1a; 身份认证和权限校验服务路由、负载均衡请求限流 在SpringCloud中网关的实现包括两种&#xff1a; gatewayzuul …

带你详细了解git的【分支和标签】

&#x1f3c5;我是默&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; ​​​ &#x1f31f;在这里&#xff0c;我要推荐给大家我的专栏《git》。&#x1f3af;&#x1f3af; &#x1f680;无论你是编程小白&#xff0c;还是有一定基础的程序员&#xff0c;…

Spring Cloud学习(五)【Feign 远程调用】

文章目录 RestTemplate方式调用存在的问题Feign的介绍定义和使用Feign客户端Feign 的自定义配置Feign 性能优化Feign 的最佳实践 RestTemplate方式调用存在的问题 先来看我们以前利用RestTemplate发起远程调用的代码&#xff1a; 存在下面的问题&#xff1a; 代码可读性差&am…

【中间件篇-Redis缓存数据库04】Redis底层原理持久化、分布式锁

Redis底层原理 持久化 Redis虽然是个内存数据库&#xff0c;但是Redis支持RDB和AOF两种持久化机制&#xff0c;将数据写往磁盘&#xff0c;可以有效地避免因进程退出造成的数据丢失问题&#xff0c;当下次重启时利用之前持久化的文件即可实现数据恢复。 RDB RDB持久化是把当…

SSM框架Demo: 简朴博客系统

文章目录 1. 前端页面效果2. 项目创建3. 前期配置3.1. 创建数据库数据表3.2. 配置文件 4. 创建实体类5. 统一处理5.1. 统一返回格式处理5.2. 统一异常处理 6. 全局变量7. Session工具类8. 登录拦截器9. 密码加盐加密10. 线程池组件11. dao层11.1. UserMapper11.2. ArticleMappe…

【Linux】Linux常用命令—磁盘管理、压缩包管理

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; &#x1f525;c系列专栏&#xff1a;C/C零基础到精通 &#x1f525; 给大…

nvm安装及使用,nodejs版本切换使用

nvm作用&#xff1a;切换电脑当前的nodejs版本用的&#xff0c;便于在开发不同的项目对应的nodejs环境 注意事项&#xff1a;安装的时候尽量把自己电脑上原本的版本给卸载防止出意外&#xff0c;如果没卸载安装的时候nvm会提示是否允许对当前电脑的nodejs进行控制&#xff0c;…

53. 最大子序和 392.判断子序列 115.不同的子序列 583. 两个字符串的删除操作 72. 编辑距离

53. 最大子序和 题目&#xff1a; 给定一个整数数组&#xff0c;求最大连续子序列和。&#xff08;至少包含一个元素&#xff09; 示例: 输入: [-2,1,-3,4,-1,2,1,-5,4]输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大&#xff0c;为 6意为为了连续最大负数都可以包含进来。…

浅析移动端车牌识别技术的工作原理及其过程

随着社会经济的发展与汽车的日益普及带来巨大的城市交通压力,在此背景下,智能交通系统成为解决这一问题的关键。而在提出发展无线智能交通系统后,作为智能交通的核心,车牌识别系统需要开始面对车牌识别移动化的现实需求。基于实现车牌识别移动化这一目标,一种基于Android移动终…