面向对象概念
运行时多态:虚函数
编译时多态:运算符,函数重载
封装抽象继承多态
cin以空格分割
const常指针与指向常量的指针
const消除define不安全性
必须初始化,表达式可以出现在常量中
非const指针不能指向常量:
const int b=28
int * const pi=&b //errorb不能变但是*pi可以改变
常函数不能修改,不能调用类内其他函数
new 和delete
type *p=new type(x)
type *p=new type[n]
type *p=new type
delete p
delete [ ]p
引用
引用必须初始化,初始可以是另一个引用
引用不存在指向引用的指针,引用数组
函数
函数名(void):函数不需要参数
一旦函数一个参数开始指定默认值,右边必须指定默认值,调用函数时实参默认右边也默认返回引用时必须保证引用对象在函数调用结束后仍然有效
仅返回值不同无法重载
函数默认参数,函数声明和定义同时存在,仅声明可包含
::强制使用全局变量
类
成员函数在类内声明类外定义:返回类型 类名::函数名(参数表)
static对象数据成员初始化为0
构造函数默认参数二义性
构造函数不能使用虚函数,析构可以
const 引用 基类构造函数需要参数 虚基类的初始化 基类构造函数需要参数的时候构造函数需要初始化列表
如果有多个对象同时结束生命周期,以构造相反的顺序析构
构造和析构都可以是inline
构造有动态内存分配操作需要手动析构
静态成员与派生类
静态成员变量初始化在类外:类内定义: static类型名 变量名
类外初始化:类型名 类名::变量名=?,使用前必须初始化
static函数不能是虚函数,不能有this指针
派生类创建:先基类,后组合最后派生
销毁:派生,组合,基类
using A::函数名不带参数类型 声明派生类可以使用A中的函数
虚基类
虚基类所有直接和间接派生类,都要在构造函数中对虚基类完成初始化
同层虚基类优先初始化,同一父派生类,两个子派生类中同一个虚基类只需要构造一次
虚基类实际上由最终派生类初始化
运算符重载用成员重载:类内已默认定义的运算符() . [ ] =等
解决默认运算符浅拷贝指针悬挂:重载=
虚函数
非静态成员才能定义为虚函数,内联函数也不能是虚函数
纯虚函数不能实例化
模板
模板函数实例化:多个同类型的参数调用只在第一次实例化,后续都用第一次实例化的模板
类模板被调用时需要传入参数类型如 Complex<int>
类模板可以在类外定义:返回类型 类名<模板参数名表>::函数名(参数列表)
异常获取
throw执行后,后面的语句都不执行
catch参数只能传入一个
stl
vector是线性表
list是链表
895

被折叠的 条评论
为什么被折叠?



