在一个类中定义了一个私有的常数组 也就是说这个数组里面的东西 不能被改变

而且 要在构造这个类的时候就把这个数组给赋值了 怎么处理

我试了几种方法 都失败了 求教各位大牛。

程序代码:

const int b[3] = {1, 2, 3};
class A
{
public:
  A();
private:
  const int a[3];
};

A::A(int b[3])
{
  for (int i = 0; i < 3; i++)
  a[i] = b[i];
}

---这样不行

程序代码:

class A
{
public:
  A();
private:
  const int a[3] = {1, 2, 3};
};

直接赋值也不行

推荐图书

  • C++ Primer中文版(第4版)
  • More Effective C++:35个改善编程与设计的有效方法(中文版)
  • 设计模式:可复用面向对象软件的基础


1个回答

使用cpp中的mutable.

突破const:

const固然是个好东东,但是有的时候可能不爽const的限制,比如某些时候我要修改const的值怎么办呢?此时可以使用const_cast来帮忙了。请注意,const_cast是运算符(关键字)而不是函数,比如要去掉const属性,可以:

const int a=3;
int b=(const_cast)<int>(a); 

如果要去掉函数的const属性 可以声明关键字mutable,它允许const函数体内修改被mutable声明的变量的值,下面是一个MSDN里面的例子:

// mutable.cpp
  class X
  {   
  public:
  bool GetFlag() const
  {   
  m_accessCount++;
  return m_flag;
  }
  private:
  bool m_flag;
  mutable int m_accessCount;
  };