头文件中的static和const成员的初…

  1. //今天在CSDN上看到一份很好的总结,原文如下

  2. #include "stdafx.h"  
  3.   
  4. #include   
  5. #include   
  6.   
  7. using namespace std;  
  8.   
  9. ///  
  10. class  
  11.  
  12. public 
  13.     A()  
  14.      
  15.   
  16.      
  17.   
  18. private 
  19.     int 0; // 非静态常成员  
  20. };  
  21.   
  22. int main()  
  23.  
  24.  
  25.   
  26. // 错误 只有静态的常成员才可以在头文件中初始化.  
  27. //error C2864: 'A::a' only static const integral data members can be initialized within class  
  28.   
  29.   
  30. ///  
  31. class  
  32.  
  33. public 
  34.     A()  
  35.      
  36.         cout<<"a "<<a<<endl;  
  37.      
  38.   
  39. private 
  40.     static int 0; // 静态但非常成员  
  41. };  
  42.   
  43. int main()  
  44.  
  45.     a;  
  46.     getch();  
  47.  
  48.   
  49. // 错误, 只有静态的常量才可以在头文件中初始化.  
  50. //error C2864: 'A::a' only static const integral data members can be initialized within class  
  51.   
  52.   
  53. ///  
  54. class  
  55.  
  56. public 
  57.     A()  
  58.      
  59.         0;  
  60.      
  61.   
  62. private 
  63.     const int a;  
  64. };  
  65.   
  66. int main()  
  67.  
  68.  
  69.   
  70. // 错误 常成员只能在初始化列表中进行.  
  71. //error C2758: 'A::a' must be initialized in constructor base/member initializer list  
  72.   
  73.   
  74. ///  
  75. class  
  76.  
  77. public 
  78.     A()  
  79.      
  80.         cout<<"a "<<a<<endl;  
  81.      
  82.   
  83. private 
  84.     const int a; // 没有初始化,const 成员使用之前必须在初始化列表中初始化.  
  85. };  
  86.   
  87. int main()  
  88.  
  89.     a;  
  90.     getch();  
  91.  
  92.   
  93. //error C2758: 'A::a' must be initialized in constructor base/member initializer list  
  94.   
  95.   
  96. ///  
  97. class  
  98.  
  99. public 
  100.     A()  
  101.         a(1) // 不可以在初始化列表中初始化  
  102.      
  103.   
  104.      
  105.   
  106. private 
  107.     static int a;  
  108. };  
  109.   
  110. int main()  
  111.  
  112.  
  113.   
  114. // 错误 静态成员只能在类外进行初始化,这是为什么来着??????忘了...  
  115. //error C2438: 'a' cannot initialize static class data via constructor  
  116.   
  117.   
  118. ///  
  119. class  
  120.  
  121. public 
  122.     A()  
  123.      
  124.         cout<<"a "<<a<<endl;  
  125.      
  126.   
  127. private 
  128.     static int a; // 没有初始化  
  129. };  
  130.   
  131. int main()  
  132.  
  133.     a;  
  134.     getch();  
  135.  
  136.   
  137. // 错误,静态成员不会自已初始化,使用之前要初始化.否则会产生连接错误  
  138. // error LNK2001: unresolved external symbol "private: static int A::a" (?a@A@@0HA) 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值