1.inline 须知:一般非类成员的函数inline声明即可,在类成员函数中,若为inline声明,成员函数声明和成员函数的定义必须放在同一个文件。
2.类的大小:经过sizeof测试,得知:一般的数据成员【不论const还算mutable还是】都要计算,不论任何类型的函数都不计入内。
3.对于大小比较小的类,尽量用指针或引用作为函数的参数,而不是一个使用形参副本,这样不用复制构造它。但假如函数要计算很久,而类相对比较小,直接建立副本参数,而不使用引用和指针也可以。
4.带默认参数的构造函数
eg: Box( int h, int w = 10, int len = 20) :height(h),width(w),length(len) { }
对于使用默认参数的情况,要避免重定义,最好放在声明处而不是定义处,因为这样使用者方便阅读。
5.析构函数的调用顺序【局部对象】
#include<iostream>
using namespace std;
class temp{
public:
temp(int A) :a(A){}
int a;
~temp(){ cout<< a<<endl;}
};
int main()
{
temp a(10);
temp b(200);
}
输出为:
200
10,也就是说先构造的后析构。
6.系统调用构造函数和析构函数的时机
a.全局对象,若多文件,构造执行的顺序不确定【但是在main之前,或者说开始处】,main退出则析构。
b.局部变量:建立对象是构造,复合体结束时析构【先构造后析构】
c.static局部对象:第一次使用时构造,mian退出时析构。
d.堆对象:new则构造,delete则析构!