c++类中static、const、static const成员变量初始化

static成员变量

1、static成员变量和类相关联,而非和类的对象相关连。换句话说就是不管生成多少个类的对象,类的static成员变量的副本只有一个。
2、类中static成员变量的初始化是在main函数之前进行的。(普通全局变量、静态全局变量和类中的静态成员变量都是在main函数之前进行初始化的)
3、具体类中static成员变量的初始化如下:类外的static成员变量初始化不加static关键字。
4、虽然static成员变量保存在全局空间内,生命周期也是全局的,但是,只在类的作用域内可以,超过作用域使用会出现错误。

class A {
private:
    static int a;
};
int A::a = 10;

const 成员变量

1、const成员变量只在某个对象生存期内是常量,但是对于整个类来说却是可变的。
一个类可以创建多个对象,每个对象内的const成员变量可以是不同的,所以不能在类的const成员变量声明的时候进行初始化,只能在类的构造函数中进行初始化。那么也就是说必须给出类的构造函数。
2、初始化方式:构造函数函数初始化

class A {
public:
    A(int x):a(x) { }
private:
    const int a;
};

static const 成员变量

static const和const static写法一样

class Test
{
public:
      static const int mask1;
      const static int mask2;
};
const Test::mask1=0xffff;
const Test::mask2=0xffff;
//它们的初始化没有区别,虽然一个是静态常量一个是常量静态。静态都将存储在全局变量区域,其实最后结果都一样。可能在不同编译器内,不同处理,但最后结果都一样。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章