最近快要期末考试了,就稍稍做做总结,梳理一下知识点
先码上思维导图,可能会有点模糊,后面每个分支每个分支来
const obj
const para
const class &
class& const
const pointer
const class* pointer
类型要匹配上
class* const pointer
const member init
必须要初始化
在参数列表里初始化
构造函数内部,不能对const成员赋值,编译器直接报错
inherit
多重继承
多继承的构造顺序
按照继承列表来
向上转型无法转换为private类型基类
虚基
抽象类
纯虚函数
虚函数
虚析构
虚基继承
继承时虚基化
虚基继承使对应的基类只有一个
多继承的时候
类的组合
构造列表中,先对基类进行初始化,再对成员对象进行初始化
类的封装与多态
多态
动态
虚函数
体现为虚函数
可以用抽象类的引用指针来调用子类方法
不可以用无法访问的基类
静态
重载
运算符重载
static member
可以被private修饰
只能用静态函数修改了
封装
this指针
访问权限
命名空间
友元
友元函数
友元类
构造函数
默认构造函数可以带有初始值的参数
构造函数初始化列表要调用基类的构造函数
析构函数
析构函数可以主动被调用
类型转换
自定义类
复制与赋值
默认类型
以前的知识点
引用类型
引用类型必须要初始化
重载
operator redef
单双目重载
单目前置
对于对象的话,前置的效率更高
单目后置
如果在类内定义的话,需要占位参数
流运算符重载
必须要返回流对象
无法重载的运算符
选择三目?:
sizeof
#预操作
类访问
.成员访问
.*,->*两类指针
operator=
对于使用=号对于对象进行复制的时候,有深浅复制问题,要用重载=
对于用=去初始化对象的,会调用构造函数
但是如果是对以及构造好的对象赋值的话,就只是简单拷贝了
函数重载
友元函数重载
二义性问题
精确匹配
默认double与float的不匹配
类函数重载
基类函数重载匹配
类函数匹配的原则是,先在子类查找有无可以匹配到的函数(如果是默认转换匹配也复合)
如果实在没有,才会去基类里面查询
标准输出输入,文件操作
stream
流输出格式控制符
字符串流
sstream::stringstream
i/ostrstream(char[],length)
预定义流
cin
cout
cerr
clog
fstream
IO
基本定义
template
模板继承
模板继承的访问
模板文件结构
设计思想
结构化的程序设计
将数据和对数据的操作分离,程序是由一个个的函数组成的
面对对象的程序设计
将数据和操作封装在一起,程序是由一个个对象组成的,对象之间通过接口进行通信
较好地支持代码复用