导图社区 C关于类与对象的应用
C++关于类与对象的应用:C++关于类与对象的基本应用、C语言中在堆区开辟空间和释放空间,一般使用malloc和free、继承(涉及对象成员的继承构造和析构函数的调用顺序)等等
这是一篇关于进程IO和网络(2)的思维导图,包括:目录操作、静态库和动态库进程、线程、线程间同步与互斥机制。
这是一篇关于进程IO和网络的思维导图,包含了行缓冲:对于终端操作采用的缓冲区,全缓冲:对于文件操作采用的缓冲区,无缓中:对于终端操作出错采用的缓冲区
这是一篇关于Linux与C的思维导图,必备Linux命令和C语言基础知识总结,包括环境安装、文件和目录相关命令、vi编辑器的使用/程序的编译和调试/数据的表示等内容。
社区模板帮助中心,点此进入>>
论语孔子简单思维导图
《傅雷家书》思维导图
《童年》读书笔记
《茶馆》思维导图
《朝花夕拾》篇目思维导图
《昆虫记》思维导图
《安徒生童话》思维导图
《鲁滨逊漂流记》读书笔记
《这样读书就够了》读书笔记
妈妈必读:一张0-1岁孩子认知发展的精确时间表
C++关于类与对象的应用
C++关于类与对象的基本应用
私有成员的操作方式
为了让对成员的保护,会把成员设为私有变量
成员函数类内声明类外实现
为了可以访问到类内的私有成员,通过在类内定义共有函数,在类外实现
类的空间问题
空的类占1个字节
如果类非空,类框架(空的类)不占字节
类中的访问权限和函数都不会占用类的空间
函数存储在代码区
除了空类,类的空间大小与结构体的计算方式一致
类的对象之间赋值问题
就是一个简单的值传递
浅拷贝和深拷贝
浅拷贝
将一个变量的值拷贝给另一个变量(会出现内存泄露的错误)
深拷贝
深拷贝:每一个变量都有自己独立的空间,赋值和释放都没有任何影响
C++中堆区开辟和释放空间
C语言中在堆区开辟空间和释放空间,一般使用malloc和free
C++语言中在堆区开辟空间可以使用malloc和free
最常使用的是new和delete(注意new和delete不是函数)
new
例:int *a = new int;
delete
例:delete a;
三个重要的函数
构造函数
析构函数
拷贝构造函数
继承
继承的概念
通过继承机制可以利用已有的数据类型来定义新的数据类 型,新的类不仅拥有旧类的成员,还拥有新定义的成员
特征:代码重用
派生类的定义方法
单继承
指每个派生类只直接继承了一个基类的特征
多继承
指多个基类派生出一个派生类的继承关系,多继承的派生类直接继承了不止一 个基类的特征
继承方式对应的派生类的访问权限
公有继承 public
公有的成员类内类外都可以直接操作
私有继承 private
私有的成员类内和类外都不能直接操作,子类如果想操作,父类必须定义公 有的成员函数
受保护的继承方式 protected
父类的公有成员和受保护的成员只能在子类类内成员函数里操作
父类的私有成员不能再子类的类内和类外访问
继承后构造和析构函数的调用顺序
顺序:父类构造-子类构造-子类析构-父类析构
涉及对象成员的继承构造和析构函数的调用顺序
如果对象成员在父类中
对象成员的构造‐‐>父类的构造‐‐>子类的构造‐‐>子类的析构‐‐>父类的析 构‐‐>对象成员的析构
如果对象成员在子类中
父类的构造‐‐>对象成员的构造‐‐>子类的构造‐‐>子类的析构‐‐>对象成员 的析构‐‐>父类的析构
继承后成员变量的使用
如果涉及同名的成员变量,默认使用的是子类的
子类如果想操作父类中同名的成员变量,需要通过对象找到指定父类然后去 操作
继承后子类中有有参构造函数的使用
父类成员变量的操作
同名成员变量的操作
链式继承(多继承)
扇形继承
菱形继承
多态
多态的分类
静态多态
编译时多态
动态多态
运行时多态
虚函数
父类的同名函数定义前加virtual就变成了虚函数
用于解决继承后父子类中有同名的成员函数不确定调用哪一个的问题
纯虚函数
没有函数体,只需要定义即可
属于抽象类
抽象类只能作为其他类的父类,不能实例化对象
父子类类型转换问题
如果父类中成员变量和成员函数都已经定义好,子类只是用于操作这些成 员,往往都会定义一个父类的指针变量保存子类的地址
上行转换
父类的指针保留子类是安全的
下行转换
父类的指针保留子类是不安全的
虚析构函数
当指针释放空间时,不会调用子类的析构函数
如果将父类的析构函数设置为虚析构函数,则会调用子类的析构函数
纯虚析构函数
纯虚析构函数需要在类外实现函数