您的位置:首页 > 编程语言 > C语言/C++

C++静态成员小结

2012-03-05 17:26 162 查看
最近用到了C++中的静态成员,在这里作一下总结。

        C++中用static来修饰的成员称为静态成员。静态成员有别于其他存储类型的成员,它不是某个对象的成员,而是所有该类对象都共享的成员。可以利用这一特性来存储共享信息或进行数据传递。

       静态成员包括静态数据成员和静态成员函数。

1.静态数据成员

       静态数据成员在生成每一个类的对象时并不分配存储空间,而是该类的每个对象共享一个公共的存储空间,并且该类的所有对象都可以直接访问该存储空间。实现了同一个类的不同对象之间的数据共享。

       必须在创建该类的对象之前为静态成员分配存储空间并设置初值,格式为:

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

       若不进行初始化则自动被初始化为0.

2.静态成员函数

       与静态数据成员一样,他们属于类的静态成员,不是对象成员。因此,引用静态成员不需要对象名。静态成员函数只能访问类中的静态数据成员,或者通过对象来引用类中的非静态数据成员。

举例说明:

//st.h文件

#include<iostream.h>

#include<string.h>

#include<iomanip.h>

class TStudent{

public:

TStudent(char *name,char *st_no,float score1);//统计学生姓名、学号与成绩的类

static void show_St(TStudent x);//声明静态成员函数

private:

char *sno;

char *sname;

float score;

static int count;//声明静态成员变量

static float sum;

static float avg;

};

TStudent::TStudent(char *name,char *st_no,float score1)

{

sname=new char[strlen(name)+1];

strcpy(sname,name);

sno=new char[strlen(st_no)+1];

strcpy(sno,st_no);

score=score1;

++count;

sum=sum+score;

avg=sum/count;

}

void TStudent::show_st(TStudent x)

{

cout<<setw(7)<<x.sno;        //访问非静态成员,通过对象引用

cout<<setw(8)<<x.sname;

cout<<setw(8)<<x.score;

cout<<setw(8)<<sum;        //访问静态成员,直接引用

cout<<setw(10)<<avg;

cout<<setw(8)<<count<<endl;

}

int TStudent::count=0;        //初始化不能在构造函数中进行

float TStudent::sum=0.0;

float TStudent::avg=0.0;

 

//st.cpp文件

#include "st.h"

void main()

{

TStudent st1("汪洋","01",80);         //所有对象s1、s2共享静态数据成员count、sum和avg

TStudent::show_st(st1);      //访问静态成员函数

TStudent s2("刘丽","02",92);

TStudent::show_st(s2);

}

 

 参考文献:《C++程序设计》,谭浩强
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c++ float 存储 c