编码时在类中声明非静态常量数据成员是否合适?

时间:2011-07-29 12:29:42

标签: c++ constants const datamember data-members

类中的数据成员可以是const,但仅限于其静态。 否则我们需要一个构造函数来初始化类中的常量。

can we declare a const data member inside a class? //this was an interview question

在我看来,我们可以,但是程序员在类中声明一个常量是否合适。

请给出一些解释/理由,为什么我们能做或不能做?

3 个答案:

答案 0 :(得分:1)

当然你可以:

struct A
{
    A() : a(5)
    {
    }
    const int a;
};

int main()
{
   A a;
}

这意味着结构A内的数据成员a不会改变。

答案 1 :(得分:1)

简短回答:您可以在班级中拥有非静态const成员。

由于您仍然需要为其分配值,因此您可以选择的唯一位置是初始化列表。

而且,如果你的成员真的不变,这总是一个很好的理由。我的意思是,const-correctness主要是一个帮助更好编码的可选工具,所以如果你愿意,可以使用它,你以后会感谢你。如果你不使用它......那它并不重要!

答案 2 :(得分:1)

确定您是否有想要在班级中使用的常量,并且属于某个类。

例如,假设您有一些具有唯一ID的数据类型,ID标识的对象永远不会更改:

class myData {
   cont int ID;
   myData(int newID) : ID(newID) {}
}