新标签页http://74.55.154.136/
c++ 静态成员遇到的坑总结 - linuxfloat - 博客园
c++ 静态成员遇到的坑总结
1.对于类静态变量的初始化,用下面方法。
1 //.h头文件中 2 class a 3 { 4 public: 5 const static int i; 6 };静态成员的初始化应放在.cpp中而不是.h中。
因为h可能被多个cpp包含(#include),这种情况下,如果是在h中初始化静态成员的 就会造成编译期间的“重定义”错误。1 //.cpp文件 2 const int a::i=1; //定义前置定义要前置放在类实现最前面,避免有时候放到了用到的函数后面。
2.对于静态常量的初始化,vc6编译器仅支持下面方法
1 //.h头文件 2 class a 3 { 4 public: 5 const static int i; 6 }; 7 //.cpp文件 8 const int a::i=1;
注意这种方法一定要把const int a::i=1;放到类实现部分的最前面。
因为后边成员函数可能需要用到他的值。gcc、mingw除了上面的方法之外也可用下面的方法:
1 class a 2 { 3 public: 4 const static int i=1; 5 };
3.类中定义常量不要忘了枚举类型