今晚在论坛里看到一篇帖子(http://topic.youkuaiyun.com/u/20100808/20/6d0557e2-62ca-4b5c-9f61-153206072de4.html),是关于常成员变量数组初始化的问题,以前碰到过这个问题,在网上搜了一下,只看到两种替代的方案。不知道可否真正实现常成员变量数组初始化,不管怎样,先在这里记一下:
问题:如何给类的常成员变量数组初始化?
时间:2010-08-08
程序举例:
- class A
- {
- public:
- A();
- const int d[2];
- };
- A::A()// 如何初始化数组d?
- {
- }
- void main()
- {
- A a;
- return 0;
- }
由于类的常成员变量必须在构造函数初始化列表中初始化,但这里常成员变量是个数组,单独使用d[0](0),d[1](0)在vc6里编译通不过,下面列举了两种替代方案:
替代方案1:
- const int arr[2] = {1, 2};
- class A
- {
- public:
- A();
- const int *d;
- };
- A::A():d(arr)
- {
- }
- int main()
- {
- A a;
- cout << a.d[0] << ", " << a.d[1] << endl;
- return 0;
- }
输出:1, 2
替代方案2:
- class A
- {
- public:
- A();
- static const int d[2];
- };
- A::A()
- {
- }
- const int A::d[2] = {3, 4};
- int main()
- {
- A a;
- cout << a.d[0] << ", " << a.d[1] << endl;
- return 0;
- }
输出:3, 4
FROM: http://blog.youkuaiyun.com/simplebelief/article/details/5797465