const成员变量

Posted phpandmysql

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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. 如果类存在继承关系,派生类必须在其初始化列表中调用基类的构造函数

以上是关于const成员变量的主要内容,如果未能解决你的问题,请参考以下文章

C++中如何可以修改const函数内的成员变量的值?

C++const成员规则

const成员变量

为啥这个 const auto 变量在 range-for 循环中为类的 const 成员函数编译?

如何将静态 const 变量保留为类的成员

使用 const 成员变量索引数组