文章出处:http://blog.csdn.net/dadalan/article/details/3864963
(1).将a[10]转移到类层次中,即将const int a[10]改为static const int a[10],你可以认真的想一想,既然a[10]是const,那么每一个对象真的需要单独的一份a[10]吗?大部分时候答案应该是no。现在类定义如下:
class A
{
public:
A(){}
private:
static const int a[10];
};
const int A::a[2] = {1,2,3,4,5,6,7,8,9,0};//在实现文件中。
(2)将数组改为指针,即const int a[10]改为const int* const a; 现在类定义如下:
const int ca[10] = {1,23,4,5,6,7,8,9,0};//注意
class A
{
public:
A():a(ca){}
private:
const int* const a;
};
(3)如果你想在每个对象中都保持一份这个常量数组的拷贝,也可以用vector来代替
#include <vector>
using namespace std;
//...
const int ca[5] = {1, 2, 3, 4, 5};
class A
{
public:
A():a(ca, ca + 5){}
private:
const vector a;
};