Chinaunix首页 | 论坛 | 博客
  • 博客访问: 521688
  • 博文数量: 68
  • 博客积分: 2501
  • 博客等级: 大尉
  • 技术积分: 713
  • 用 户 组: 普通用户
  • 注册时间: 2009-12-07 17:49
个人简介

文章分类

全部博文(68)

分类: C/C++

2010-09-06 10:45:21

一、简介
静态数据成员是类的所有对象中共享的成员,它不属于任何对象,不会随对象的建立而产生,也不因对象的析构而删除。使用静态数据成员可以实现多个对象间的数据共享,因此可以节省内存。与一般数据成员一相,定义为私有的静态数据成员不能由外界访问。
 
二、使用方法
1.定义与一般数据成员相似,但前面要加上static关键词。
2.初始化与一般数据成员不同,静态数据成员初始化的格式为:<类型> <类名>::<静态数据成员>=<值>。
3.初始化时不加成员的访问权控制符privatte,public等 。
4.初始化时使用域运算符来标明它所属的类,这也说明静态数据成员是类的成员,而不是对象的成员。
5.静态数据成员是静态存储的,它是静态生存周期,必须对它进行初始化且不能在构造函数中进行。
6.引用静态数据成员格式:<类名>::<静态成员名>
 
三、例子

#include <iostream>
using namespace std;

class Myclass {
    public:
    Myclass(int a, int b, int c);
    ~Myclass(){ cout<<"deconstruct.."<<endl;}
    void GetNumber();
    void GetSum();
    private:
    int A, B, C;
    static int Sum; //静态数据成员声明
};

int Myclass::Sum = 0; //静态数据成员初始化

Myclass::Myclass(int a, int b, int c) //构造函数实现
{
    A = a;
    B = b;
    C = c;
    Sum+= A + B +C;
    cout<<"construct.."<<endl;
}

void Myclass::GetNumber()
{
    cout<<"Number="<<A<<","<<B<<","<<C<<endl;
}

void Myclass::GetSum()
{
    cout<<"Sum="<<Sum<<endl;
}

int main()
{   //第一种情况,一次性定义
    Myclass m(1,5,8),n(2,4,6);
    m.GetNumber();
    n.GetNumber();
    m.GetSum(); //输出26
    n.GetSum(); //输出 26

    //*第二种情况,分步定义
    //Myclass m(1,5,8);
    //m.GetNumber();
    //m.GetSum(); //输出 12
    //Myclass n(2,4,6);
    //n.GetNumber(); 
    //n.GetSum(); //输出26
    return 0;
}


阅读(1682) | 评论(0) | 转发(0) |
0

上一篇:关于常对象成员笔记

下一篇:QT程序库

给主人留下些什么吧!~~