const成员变量

#include <iostream>
using namespace std;

class A
{
    public:
        A(int size) : SIZE(size) {};
    private:
        const int SIZE;
};

int main()
{
    A a(100);
}

说明

  • 在类中声明变量为const类型,但是不可以初始化
  • const常量的初始化必须在构造函数初始化列表中初始化,而不可以在构造函数函数体内初始化

但是

 此时的const变量属于具体的一个对象,如何在整个类中都恒定不变呢?

 答案是利用枚举,举例

#include <iostream>
using namespace std;

class A
{
    private:
        enum {SIZE = 100};
    public:
        int array[SIZE];
};

int main()
{
    A a;
}

枚举常量不会占据对象的存储空间,在编译时被全部求值

但是,它隐含的数据对象类型为整形,不能表示其他类型。

问题

如何定义在类中定义非整形常量?(待解决)

 

话说有几个地方必须在构造函数的初始化列表中

  1. 类的const常量
  2. 类的引用类型成员
  3. 没有默认构造函数的类类型成员
  4. 如果类存在继承关系,派生类必须在其初始化列表中调用基类的构造函数
posted @ 2019-05-08 23:28  风雪之殇  阅读(1271)  评论(0编辑  收藏  举报