c++ 静态成员遇到的坑总结

新标签页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.类中定义常量不要忘了枚举类型

原文地址:https://www.cnblogs.com/lexus/p/3513911.html