美文网首页
static、const、static const类成员变量初始

static、const、static const类成员变量初始

作者: 突击手平头哥 | 来源:发表于2021-03-28 10:12 被阅读0次

    static、const、static const类成员变量初始化

    const修饰的是常量,在超过作用域时会被释放;static修饰的是静态变量,对于类来说静态成员是属于整个类的。

    static、const的初始化

    class Test_Class_A {
    public:
        Test_Class_A():const_var(1){
            cout << "这是构造函数" <<endl;
        }
        const int const_var;
        static int static_var;
    };
    
    int Test_Class_A::static_var = 2;
    
    int main()
    {
    
        return 0;
    }
    
    • 常量是恒定不变的,类实例在进入构造函数前就会初始化所有的成员变量,常量只能由初始化列表初始化
    • 静态成员变量是属于整个类的与构造函数无关,在类外部定义和初始化即可

    static const初始化

    staic const和const static意义是一样的;假设期望定义一个所有类实例中恒定的量,就需要用到这个关键字了

    using namespace std;
    
    class Test_Class_A {
    public:
        Test_Class_A():const_var(1){
            cout << "这是构造函数" <<endl;
        }
        const int const_var;
        static const int static_var;
    };
    
    const int Test_Class_A::static_var = 2;     //定义+初始化
    
    int main()
    {
    
        return 0;
    }
    

    static const应当被看作是恒定的静态变量,因为其存储架构和static是一致的

    类声明中初始化

    在C++较高的版本中是支持在类的声明中直接定义变量的

    #include <stdio.h>
    #include <stdlib.h>
    #include <typeinfo>
    #include <vector>
    #include <iostream>
    
    using namespace std;
    
    class Test_Class_A {
    public:
        Test_Class_A():const_var(1){
            cout << "这是构造函数" <<endl;
        }
        const int const_var;
        static const int static_var = 0;
    };
    
    
    int main()
    {
        cout << Test_Class_A::static_var << endl;
        //cout << &Test_Class_A::static_var <<endl; 报错
        return 0;
    }
    
    • 可以在类的声明中初始化,但是需要明确的是:这里为什么可以用?是因为编译器做了文本替换之类的操作,此时该变量还是未定义的
    • 由上一条可知,这种类声明中初始化的方式仅限于int、float等内置类型

    相关文章

      网友评论

          本文标题:static、const、static const类成员变量初始

          本文链接:https://www.haomeiwen.com/subject/zicphltx.html