常成员变量数组初始化的问题

来源:互联网 发布:.com.cn是什么域名 编辑:程序博客网 时间:2024/06/05 07:55

今晚在论坛里看到一篇帖子(http://topic.csdn.net/u/20100808/20/6d0557e2-62ca-4b5c-9f61-153206072de4.html),是关于常成员变量数组初始化的问题,以前碰到过这个问题,在网上搜了一下,只看到两种替代的方案。不知道可否真正实现常成员变量数组初始化,不管怎样,先在这里记一下:

 

问题:如何给类的常成员变量数组初始化?
时间:2010-08-08

程序举例:

[cpp] view plaincopy
  1. class A  
  2. {  
  3. public:  
  4.     A();  
  5.     const int d[2];  
  6. };  
  7.   
  8. A::A()// 如何初始化数组d?  
  9. {  
  10. }  
  11.   
  12. void main()  
  13. {  
  14.   A a;  
  15.   return 0;  
  16. }  

    由于类的常成员变量必须在构造函数初始化列表中初始化,但这里常成员变量是个数组,单独使用d[0](0),d[1](0)在vc6里编译通不过,下面列举了两种替代方案:


替代方案1:

[cpp] view plaincopy
  1. const int arr[2] = {1, 2};  
  2.   
  3. class A  
  4. {  
  5. public:  
  6.   A();  
  7.   const int *d;  
  8. };  
  9.   
  10. A::A():d(arr)  
  11. {  
  12. }  
  13.   
  14. int main()  
  15. {  
  16.   A a;  
  17.   cout << a.d[0] << ", " << a.d[1] << endl;  
  18.   return 0;  
  19. }  

输出:1, 2


替代方案2:

[cpp] view plaincopy
  1. class A  
  2. {  
  3. public:  
  4.     A();  
  5.     static const int d[2];  
  6. };  
  7.   
  8. A::A()  
  9. {  
  10. }  
  11.   
  12. const int A::d[2] = {3, 4};  
  13.   
  14. int main()  
  15. {  
  16.     A a;  
  17.     cout << a.d[0] << ", " << a.d[1] << endl;  
  18.     return 0;  
  19. }  

输出:3, 4





FROM: http://blog.csdn.net/simplebelief/article/details/5797465

0 0