zoukankan      html  css  js  c++  java
  • 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. 如果类存在继承关系,派生类必须在其初始化列表中调用基类的构造函数
  • 相关阅读:
    ! JOISC2020DAY2变色龙之恋
    ! JOISC2020DAY1扫除
    JOISC2020DAY1汉堡肉
    JOISC2020DAY1建筑装饰4
    ! JLOI/SHOI2016随机序列
    JLOI/SHOI2016黑暗前的幻想乡
    ! JLOI/SHOI2016成绩比较
    JLOI/SHOI2016方
    JLOI/SHOI2016侦查守卫
    ! AHOI/HNOI2017抛硬币
  • 原文地址:https://www.cnblogs.com/phpandmysql/p/10835889.html
Copyright © 2011-2022 走看看