C++静态成员变量的定义

Posted LC编程开发者

tags:

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

1静态成员

       如果定义了一个student类,定义 3 个student类的对象,如下:

student stud1, stud2, stud3;

那么,每一个student类对象都分别有自己的成员变量,而不同对象的成员变量各自有值,互不相干。但是,有时人们希望有一个或几个成员变量为所有对象所共有。这样,可以实现数据共享。

       学习C语言时已经了解了全局对象,它能够实现数据共享。如果在一个程序文件中有多个函数,在每一个函数中都可以改变全局变量的值。全局变量的值为各个函数共享,但是,用全局变量时安全性得不到保证,由于在各处都可以自由地修改全局变量的值,很有可能偶到失误,全局变量的值就被修改,导致程序错误。因此,在实际工作中很少使用全局变量。

       如果想在同类的多个对象之间实现数据共享,也不要用全局对象,可以用静态的成员变量。使用静态成员变量,实现数据共享。

2静态成员变量

2.1 静态成员变量的定义

       静态成员变量是一种特殊的成员变量。它以关键字static开头,用static关键字来修饰的一种成员变量,例如:

class student

{

public:

    char name[32]; //姓名

    char addr[32]; //家庭地址

    static long long number; //电话号码

public: //以下部分是公有部分

    student(char* pn, char* pa)

    {

        strcpy(name, pn);

        strcpy(addr, pa);

    }

    void print() const

    {

        cout << "name = " << name << endl;

        cout << "addr = " << addr << endl;

        cout << "number = " << number << endl;

    }

};

       此时,在student类中定义的number成员变量,就是“静态成员变量”。每个student类对象中的number的值都是一样的,把它定义为静态成员变量,这样它就为各对象所共有,而不只属于某个对象的成员,所有对象都可以引用它。

静态的成员变量在内存中只占一份空间(而不是每个对象都分别为它保留一份空间)。每个对象都可以引用这个静态成员变量。所有同类对象的静态成员变量的值都是一样的。如果改变它的值,那么,在各个对象中这个成员变量的值都同时改变了。这样,可以节省空间,提高效率。

静态成员变量是属于类,而不是属于某个独立对象。N个独立的对象,共享一个静态成员变量

       如下是一个测试例子:

       程序运行结果如下:

       可以看到,student类定义number成员是static类型。在类外给number成员初始化。然后,在stud对象中修改number成员的值。

       然后,输出stud1对象的信息,得到的stud1. number成员变量是stud.number设置的值。所以,stud, stud1对象是共享static类型的number成员变量。

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

 

 

 

 

 

 

 

 

 

 

 

 

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

C++静态成员变量的定义

C++静态成员变量的定义

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

C++类中的静态成员函数以及静态成员变量

C++类中的静态成员函数以及静态成员变量

C++ 静态成员变量成员函数