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

本文探讨了C++中类的常成员变量数组初始化问题,并提供了两个替代方案。方案一通过使用指针指向初始化的数组来实现;方案二利用静态常量数组初始化类的常成员变量。通过示例代码演示了每种方案的实现过程及输出结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

 

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

程序举例:

[cpp]  view plain copy
  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 plain copy
  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 plain copy
  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.youkuaiyun.com/simplebelief/article/details/5797465

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值