内部类型及指针的缺省初始化
在写template时想到的,写出来,给大家参考一下。
一般,C++可以这样初始化一个内部类型:
int i(0); // OK,变量
double r(0);// OK,变量
但是不能这样:
int i(); // OK,^?^,函数
double r(); // OK,^?^,函数
当然,可以这样:
int i=int(); // OK,变量,i==0
double r=double(); // OK,变量,r==0.0
也可以带参数:
int i=int(1); // OK,变量,i==1
double r=double(1); // OK, 变量,r==1.0
普通指针:
typedef int* IntPtr;
IntPtr p(0); // OK,变量
IntPtr p=IntPtr(); // OK,变量
IntPtr p=IntPtr(0); // OK,变量
直接定义普通指针:
int* p(0); // OK,变量
int* p=(int*)(); // 不行
int* p=(int*)(0); // OK,变量
函数指针:
typedef int (*FunPtr)();
FunPtr f1(main); // OK,变量 //假定int main();
FunPtr f2=FunPtr(); // OK,变量
FunPtr f2=FunPtr(main); // OK,变量
直接定义函数指针:
int(*f)()(main); // OK,f==main
int(*f)()=(int(*)())(); // 不行了!!
int(*f)()=(int(*)())(main); // OK,f==main,太难看了