预览加载中,请您耐心等待几秒...
1/6
2/6
3/6
4/6
5/6
6/6

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

C++类的静态数据成员-关键字static 定义:用static关键字声明的数据成员称为静态数据成员。 每个类只有一个存储单元,静态数据成员为该类的所有对象共有,不属于某个对象。静态数据成员的初始化必须在类以外进行定义性说明。 形式为:<类型><类名>::<静态数据成员>=值 静态成员注意以下几点: 1、静态成员必须初始化,如果其是有公共访问属性的可以通过对象重新设置值,其最终值以最后一次设置的为准。 2、初始化方式只能是在类以外进行定义性说明 3、访问方式可以是对象.静态成员或ClassName::静态数据成员 通过下面的例子来理解定义: classA{ private: intw,h; intm; public: staticintarea;//静态数据成员的定义形式 intarea1; voidsetVal(intx) { area=x; } intgetArea() { returnarea; } A(intx,inty) { w=x,h=y; } A(){} }; intA::area=0;//必须在类外声明性初始化,其他任何初始化都是错误的。 voidmain() { Aconsta(3,4); Ac(2,6); Af; c.area1=4; c.setVal(4); c.area=8;//初始化后可以改变其值,不初始化程序编译都通不过 f.area=16; cout<<A::area<<c.area<<endl;/*都输出16。以最后一次的改变为准所有对象共享统一静态成员内存空间,两种访问方式都行,当然必须是公共的静态成员,私有的不能在类外访问。*/ system("pause"); } C++类的静态函数成员-关键字static 定义:用static关键字声明的函数成员称为静态函数成员。 每个类只有一个存储单元,静态函数成员为该类的所有对象共有,不属于某个对象。共有的静态函数成员可以通过类名或对象名来调用。静态函数成员必须通过对象名来访问非静态数据成员。静态成员呢? 注意: 静态成员函数在类外实现时候无须加static关键字,否则是错误的。 通过下面题目来理解静态成员函数 A:静态函数成员必须通过对象名来访问非静态数据成员。找出下面程序的错误。 classA{ public: staticintgetVal() { returnx;//错误不能调用非静态数据成员,要通过类的对象来调用。 } A(intxx){} private: intx; }; voidmain() { Aa(3); cout<<a.getVal(); system("pause"); } 通过类的对象来引用非静态数据成员改正如下: classA{ public: staticintgetVal(Aa);//静态成员函数 A(intxx){x=xx;} private: intx; }; intA::getVal(Aa){//在类外实现静态成员函数,不能加static关键字。 returna.x; } voidmain() { Aa(3); cout<<a.getVal(a);//输出3 system("pause"); } B、静态函数成员可以调用静态数据成员 classA{ public: staticintgetVal(Aa); A(intxx){x=xx;} private: staticintstaticVar; intx; }; intA::staticVar=100; intA::getVal(Aa) { //returna.staticVar;正确的调用方法一 //returnA::staticVar;正确的调用方法二 returnstaticVar;//正确的调用方法三 } voidmain() { Aa(3); cout<<a.getVal(a); system("pause"); }