C++静态成员变量初始化

Posted LC编程开发者

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++静态成员变量初始化相关的知识,希望对你有一定的参考价值。

静态成员变量初始化

       静态成员变量可以初始化,但只能在类体外进行初始化。如:

long long student::number = 13926572996;    //在类体外对静态成员变量赋值

其一般形式为:

数据类型 类名::静态成员变量名 = 初值;

不必在初始化赋值语句中加 static。

       注意:不可以在构造函数的参数初始化表中对静态成员变量初始化,例如:

    student(char* pn, char* pa, int n):number(n)

    {

        strcpy(name, pn);

        strcpy(addr, pa);

    }

       在构造函数中,对static类型的number成员进行初始化,是错误的操作。

如果未对静态成员变量赋值,则编译系统会自动赋初值为0。

如果一个成员变量定义为const类型,同时,也是static类型,那么,应该怎么样初始化?有如下的分析:

(1) static类型的成员变量,需要在类外进行初始化;

(2) const类型的成员变量,需要在构造函数的初始化列表进行初始化;

       那么,const类型的static成员变量,不可以在构造函数的初始化列表中进行初始化,例如:

       程序编译错误,如下:

       提示 student::number成员变量是static类型,仅仅在定义的时候可以初始化。所以,不可以在构造函数列表中初始化。所以,在类外对static类型的成员变量进行初始化,程序测试代码如下:

       程序运行结果如下:

       所以,可以在类外对const类型的静态成员变量进行初始化。

       注意:对于const 类型的static成员变量,可以在定义它的时候进行初始化,如下:

       在student类内对number成员进行初始化。这是合法的语句。

韦凯峰 Linux C/C++ 程序设计教程,Linux 系统编程,Openwrt 系统开发,微信:13926572996,QQ:1523520001,博客:www.mylinux.vip

以上是关于C++静态成员变量初始化的主要内容,如果未能解决你的问题,请参考以下文章

C++静态成员变量初始化

C++静态成员变量初始化

C++静态成员变量及其初始化

c++中静态成员变量和静态成员函数(笔试经历)

总结C++静态成员变量的特性总结及测试用例

C++中静态成员变量(不支持在类定义中初始化不是常量的静态数据成员)