1)默认参数
非静态变量不能做默认参数,如下例:
- class A
- {
- public:
- void fun(int x = a);//OK
- //void fun2(int x = b); //非静态变量不能做默认参数
- static int a;
- int b;
- };
静态数据类型是指非不确定变量类型,包括:const 、#define、全局类static、常量。
默认实参是在编译时期指定,非static成员在此时还没被初始化,所以不能,而静态成员是在编译时就能确定值了。
非静态数据类型在类构造前没有完成数据的绑定。只有用静态数据类型,这样在对象构造前就可以使用了。因为静态数据类型在类定义的时候就需要初始化了。