目录
1.3成员函数(对象所占空间取决于数据成员,和成员函数无关)
1.7对象数组(析构过程为栈)className instances[size] ={Obj1(),Obj2(...),...}
1.9对象成员的访问(成员运算符访问、指向运算符访问、引用)
1.11 对象的动态创建与释放 className *instance = new className(params...) ; delete instance
2.6多继承 class className:limitation baseClass1,limitation baseClass2{...}
3.4功能晚绑定(运行阶段,虚函数:virtual returnType functionName (params...))
4.2友元函数 friend returnType functionName(params...) 在类中声明
4.5静态成员函数(没有this指针,不能访问非静态成员,除非传入对象)
1.类与对象
1.1 基本概念(继承、封装、抽象、多态)
类
对象
访问限制符
1.2类的声明
1.3成员函数(对象所占空间取决于数据成员,和成员函数无关)
1.4数据成员(不能在类中初始化)
1.5构造与析构函数(自动执行,顺序为栈)
构造函数(系统提供默认构造函数)
参数初始化表
重载
析构函数(只能有一个,不能重载,无参)
全局对象的调用时间
局部对象的调用时间
静态局部对象调用时间
1.6对象的定义
1.7对象数组(析构过程为栈)className instances[size] ={Obj1(),Obj2(...),...}
1.8对象指针(this)
1.9对象成员的访问(成员运算符访问、指向运算符访问、引用)
1.10对象与const
常对象(无法调用非const成员函数) const className instance() | className const instance()
常对象成员
常成员函数(只能访问数据成员,不能修改) returnType functionName(params...) const
常数据成员
指向对象的常指针(不能修改指针)className * const pointerName = &instance
指向常对象的指针(常对象只能用指向常对象的指针,不能使用普通指针)const className * pointerName
1.11 对象的动态创建与释放 className *instance = new className(params...) ; delete instance
1.12对象的赋值与复制
赋值(赋值运算符 = 默认重载,含指针数据成员的类必须自己实现运算符重载,否则产生指针悬挂问题 )object1 = object2
复制(拷贝构造函数:className (const className &obj)) className instance(instance1) | className instance = instance1
两者异同:
2.继承与派生(派生会自动屏蔽基类同名成员;)
2.1基本概念(三种继承方式)
2.2 单继承
2.3派生类构成
2.4访问属性
2.5构造与析构(先执行基类构造,后执行基类虚构)
构造 className(params...):baseClass(paramValue...){}
2.6多继承 class className:limitation baseClass1,limitation baseClass2{...}
2.7对象关系(派生类可以赋值给基类)
3.多态与虚函数
3.1基本概念(编译时多态、运行时多态)
3.2向上类型转换
3.3功能早绑定(编译阶段)
3.4功能晚绑定(运行阶段,虚函数:virtual returnType functionName (params...))
3.5虚析构函数
3.6虚函数与重载的区别(p177)
3.7纯虚函数与抽象类
纯虚函数 virtual returnType functionName(params...) =0
抽象类 (具有一个纯虚函数的类为抽象类,只能作为接口,不能生成对象)
4.友元与静态
4.1基本概念
4.2友元函数 friend returnType functionName(params...) 在类中声明
4.3友元类 friend className
4.4静态数据成员(只能在类中声明,类外初始化)
4.5静态成员函数(没有this指针,不能访问非静态成员,除非传入对象)
5.运算符重载
5.1基本概念
5.2重载规则
6.泛型编程
6.1 基本概念
6.2 函数模板
函数模板定义
函数模板实例化(编译器自动识别)
模板参数(注意:c++不对模板参数做任何类型转换,需要手动转换。不能提供参数默认值)
模板函数重载(指的是模板函数也可以被普通函数重载)
6.3类模板
类模板定义
类模板实例化(className<TypeName> instance)
类模板参数(可以提供参数默认值,只能放在形参表的最右端,否则出错)
7.STL
algorithm.h
deque.h(双向队列)
functiona.h
iterator.h
vector.h(向量)
list.h(双向链表)
map.h(键值映射)
memory.h
numeric.h
queue.h(队列)
set.h(不重复集合和可重复集合)
stack.h(堆栈)
utility.h