C++速学day4

类的继承关系

蛇 和 爬行类动物 //这两个类就是继承关系

子类 父类 //它们的关系相当于

派生类 基类

继承的作用

1、 吸收基类成员

2、改造基类成员

3、添加新的成员

cpp 复制代码
class  Dervide : public base                  //这里的public 就是为了使用类型兼容性规则、
{

}

注意:类型兼容性规则, 在需要基类对象的地方可以用派生类对象代替

派生类的构造和析构的流程

执行基类构造
执行派生类构造
执行派生类析构函数函数体
析构派生类数据成员
执行基类析构函数函数体
析构基类数据成员

在构造的时候先构造基类,在析构的时候先析构派生类。

如果基类需要参数 ,派生类在构造函数种要记得初始化基类的参数。

如要初始化派生类的成员,当用初始化列表初始化时 ,要把基类的初始化放在派生类初始化的前面

对基类中的对象来说:

protected 关键字 在类外不能被访问 ,在派生类种可以被访问

private 无论在哪里都不能被访问

访问控制

在类内无论关键字是什么都可以访问

共有的在公有派生类中可以访问

共有成员被保护继承 在派生类中可以访问 在类外不能访问

保护成员被保护继承 在派生类中可以访问 在类外不能访问

多态性

多态是指同样的消息被不同类型的对象接受时导致不同的行为。

四类多态性

重载多态,强制多态,包含多态和参数多态 //重载,强制和参数多态是编译时多态

多态的实现

编译时的多态 运行时的多态

编译时确定执行的函数是什么 运行时确定执行的函数是什么

静态绑定 动态绑定/晚期绑定/后绑定

运算符重载

cpp 复制代码
 Complex operator + (const Complex &other)const
    {
        Complex ret(this->real+other.real,this->imag+other.imag);
        return ret;
    }
//重载了一个  + 运算符

函数返回值可以选择返回引用类型的值 ,只要返回的那个对象的空间还在,就可以。

eg:

对于一个默认的C++类中默认存在的函数

虚函数

在 基类中调用的函数 前面加上 virtual

cpp 复制代码
virtial  void fn() {cout << "base"<< endl};

virtial 必须加在基类 两个函数必须同名同参

虚函数实现的包含性,使用的时候不需要改变 指针的类型 。

对于基类存储大小的变化: 在加上了虚函数之后内存增加了8个字节(增加了一个指针)

虚表------------ 虚函数表的简称

是一个数组 装的都是指针//函数指针数组 是虚函数的函数指针数组

//并且是静态的

//加上了virtual之后这个类就会存在一个虚表,当调用虚函数的时候程序会去查找虚表。

注意:

析构函数一般都是虚函数

全局函数不能是虚函数

静态成员函数不能是虚函数

构造函数不能为虚函数

纯虚函数 声明:virtual void speak() = 0;

若一个函数中有一个纯虚函数,该抽象类无法创建对象 -------抽象类
一个类只有纯虚函数没有别的函数 就是 -----接口类

泛型编程 (类型参数化过程)

cpp 复制代码
template <typename T>                              //auto不能作为形参

解决类型不匹配的函数传参问题

此时在 函数中加上 eg:

printfArray(T *p, int len)

{

xxxxxx;

}

注意: 如果函数模板与函数同名 则先调用函数,函数模板可以放在头文件中。

相关推荐
Swift社区2 小时前
OpenHarmony鸿蒙PC平台移植 gifsicle:CC++ 三方库适配实践(Lycium tpc_c_cplusplus)
c语言·c++·harmonyos
foundbug9992 小时前
最优化问题的外点罚函数法与内点罚函数法-MATLAB实现
开发语言·matlab
弹简特2 小时前
【零基础学Python】05-Python函数完全指南:从初阶定义到进阶参数,一篇打通核心难点
开发语言·python
AugustRed2 小时前
A2UI 完整学习指南(含 Java 后端 + 前端实战示例)
java·开发语言·前端
jingling5553 小时前
自建技术博客实战(三):工具专栏——地图定位、声音复刻与 rembg 抠图
android·开发语言·前端·ai·nextjs
basketball6163 小时前
C++进阶:1. 引用折叠规则
java·开发语言·c++
酬勤-人间道3 小时前
VTK 与 Cesium-native 结合实践:小场景三维编辑 + 数字地球精准贴合
c++·qt·vtk·遥感·岩土·cesium-native
智者知已应修善业3 小时前
【51单片机8个LED的花样12亮34熄56间隔78闪烁3秒3闪烁】2023-11-4
c++·经验分享·笔记·算法·51单片机
初中就开始混世的大魔王3 小时前
5 Fast DDS-Discovery
网络·c++·算法·中间件
Deep-w3 小时前
【MATLAB】基于模型预测控制的自适应巡航车辆过渡工况安全控制研究
开发语言·人工智能·算法·机器学习·matlab