-
- 函数与const
- const在函数名前是修饰返回值,表示返回值为const类型,不可更改。
- 在函数后修饰函数,表示函数为常成员函数,不能对类的成员变量进行修改。
- 并且当声明一个类的const对象时,只能调用其类的const方法。
- const在后的方法能够重载。
- virtual
-
友元函数、构造函数、static静态函数,不能用virtual关键字修饰。
-
普通成员函数 和析构函数 可以用virtual关键字修饰。
- virtual修饰析构函数的话,防止动态绑定时无法对派生类对象进行有效释放。即当有向上转型时,调用父类的析构函数时会先调用子类的析构函数,防止内存泄露。
- 包含纯虚函数的类为抽象类,不能实例化。
- 虚继承是为解决在基类派生多个子类又在继续派生中回归时对基类的函数访问的确定性,不使用虚继承就要加上类的命名空间。虚继承和继承差别很大,尤其是在static_cast进行类型转换时。
- 当类中存在虚函数时,派生类中会有一个虚表,虚表位于类内存空间的靠前位置。http://blog.csdn.net/smstong/article/details/24455371
-
- new与delete
- 带有析构函数的的类,创建动态数组时,数组的长度位于数组指针地址开始前一个指针长度。
- 基本类型的动态数组应该在其周围,例如当:int *a=new int[3] 为a[3]初始化,delete[] a 会出错,但a[100]初始化一般不会出错。
- 模板不支持分离编译, 把你模板类的声明和实现放到.h文件里面
- 一个编译单元(translation unit)是指一个.cpp文件以及它所#include的所有.h文件。
- 在一个cpp中调用另一个cpp文件的代码时,是以外部连接的形式记录的,通过连接器寻找真实的地址。
- 当一个模板不被用到的时侯它就不该被实例化出来
- 函数与const