C++ --- 静态数据成员

静态数据成员

多个同类的对象之间实现数据共享,但是不用全局变量,可以用静态数据结构成员。因为全局变量的值可以在各处随意的修改,很可能因为一处失误,导致整个程序失败。

#include <iostream>
using namespace std;

class Box
{
    public:
        Box(int, int);
        int volume();
        static int height;            //height is defined as static data 
        int width;
        int length;
};

Box::Box(int, int)
{
    width = w;
    length = len;
}

int Box::volume()
{
    return(height * width * length);
}

int Box::height = 10;                 //initialize static member data 

int main()
{
    Box a(15,20),b(20,30);
    cout << a.height << endl;        //use object a 
    cout << b.height << endl;        //use object b
    cout << Box::height << endl;     //use class Box
    cout << a.volume() << endl;      //function volume
}

输出结果:

10
10
10
3000
Program ended with exit code: 0

分析一下:

a. 静态数据成员可以初始化,但只能在类体外初始化。格式:

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

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

注意:不能用参数初始化表对静态数据成员初始化。例如:

Box(int h, int w, int len):height(h){}    //error,height is static data

 b. a.height/b.height/Box::height,输出都是10,说明静态数据成员为所有同类对象所共有,不只是属于某一个对象。因为静态数据对象在内存中只占用一份空间,如果改变了它,那么各个对象的数据成员的值都改变了,可以节约空间和效率。它不随着对象的建立而分配空间,也不随着对象的撤销而释放。静态数据成员是在程序编译时被分配空间的,到程序结束时才释放。

c. 有了静态数据对象,对象之间的数据有了沟通的渠道,实现数据共享,因此可以不使用全局变量。静态数据成员的作用域是该类,而不是全局。

 

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值