C++ | static const integral data member在类中的初始化

时间:2022-09-09 22:47:38
  1. 当我们在类中定义了一个静态成员变量的时候,我们需要在类之外初始化它,因为他是属于所有的类的。该类的其它对象对这个静态变量也是可以进行修改的。

    //非常量静态成员变量初始化对比

    #include <iostream>

    using namespace std;

    class person{
    public:
    static int num;
    //static int num = 11;
    };
    int person::num = 10;

    int main(){
    person bob;
    system("clear");
    cout << bob.num << endl;
    return 0;
    }


    在类内初始化非常量静态成员变量失败
    C++ | static const integral data member在类中的初始化
    在类外初始化静态成员变量成功
    C++ | static const integral data member在类中的初始化

        //定义另外一个对象timmy
    person timmy;
    cout << "timmy:" << timmy.num<< endl;

    同一个类的不同对象共用一个静态成员变量
    C++ | static const integral data member在类中的初始化

  2. 但是,常量的静态成员变量可以在类里面定义。


    #include <iostream>

    using namespace std;

    class person{
    public:
    static const int num = 11;
    const static int age = 23;
    };

    int main(){
    system("clear");
    person tom;
    cout << "tom:" << tom.num << endl;
    cout << "tom:" << tom.age << endl;
    return 0;
    }

    static const和const static一样的。
    C++ | static const integral data member在类中的初始化

  3. 可是只有integral data member才可以,像 int,long,char才行。double,float等都不行


    #include <iostream>

    using namespace std;

    class person{
    public:
    static const double num = 2.2;
    };
    int main(){
    system("clear");
    person tom;
    cout << "tom:" << tom.num << endl;
    return 0;
    }

    用 static const double 初始化失败
    C++ | static const integral data member在类中的初始化