重载, 同个类中
- 函数名相同, 参数不同
- 函数名 + 参数都相同, 实现不同
- 基类函数 必须由 virtual 关键字修饰.
- 如果 派生类的函数 与 基类函数同名, 但参数不同, 则无论是否有virtual关键字, 则基类函数被隐藏.
- 如果 派生类的函数 与 基类函数同名, 并且参数也相同, 但基类函数没有virtual关键字, 则基类函数被隐藏.
内联函数:
1. 内联函数代码不宜过长, 否则 内存消耗较大.
2. 不能出现循环, 否则函数调用代价较大.
3. 不能出现递归, 否则编译器会报错或者自动取消内联.
函数定义
1. 功能要单一化
2. 规模要小
3. 函数内部尽量避免使用静态变量. 除非程序员确认必需.
4. 严格检查所用到的输入参数 全局变量, 文件句柄等有效性.
5. 明确错误返回.
内存管理
1. 注意内存申请是否失败.
2. 新内存注意初始化
3. 避免数组或指针的下标越界, 强制使用动态数组模板.
4. new/delete 要匹配. free或者delete之后, 应立刻把指针设置为NULL, 防止野指针.
5. 防止野指针, 前置使用 SAFE_DELETE SAFE_RELEASE宏.
#define SAFE_DELETE(p) { if(p) {delete(p); (p)=NULL;} }
#define SAFE_DELETE_ARRAY(p) { if(p) {delete[] (p); (p)=NULL;}
#define SAFE_RELEASE(p) { if(p) { (p)->Release(); (p)=NULL;} }