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

亲,该文档总共34页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

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

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

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

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

student(inta,floatf){num=a;score=f;} }; 3.3.1.2类定义外初始化 ¤语法:数据类型类名::数据成员名=初值; 注意:①如果没有初值,系统自动初始化为0。 ②整型const静态数据成员可以在类定义体内用常量值初始化,但仍要在类定义体外定义该数据成员且不能再指定初始值。 ③静态数据成员的初始化不应该放在头文件中。一般放在类定义之后,main函数之前。产生类对象之前可能用到静态数据成员。 例如:classAccout{ {staticconstintnamesize=16; staticconstcharname[namesize];}; constintAccout::namesize; constcharAccout::name[namesize]=”savingaccount”; 3.3.1.3静态数据成员的访问类的成员函数中访问:用静态数据成员名直接访问 非成员函数中访问public静态数据成员: 类名::静态数据成员名 对象.静态数据成员名 指向对象的指针->静态数据成员名 例如:计数已创建对象的数目 classData{ intnum; floatscore; public: staticintobject; Data(inta,floatf):num(a),score(f) {object++;} ~Data(){object--;} };3.3.2静态成员函数 希望在产生对象之前访问private静态数据成员 3.3.2.1声明与定义 在类内普通成员函数声明前加上static关键字,在类外定义前不需再加static。 注意:静态成员函数没有this指针,不能访问类的非静态成员,只能访问类的静态数据成员或是调用其它静态成员函数。 3.3.2.2调用 类名::静态函数名(参数表); 对象.静态函数名(参数表); 指向对象的指针->静态函数名(参数表); 例如:classSmall{ staticintobject; public: Small(){object++;} staticintget_n(){returnobject;}~Small(){object--;}}; intSmall::object=0; intmain() {intn; n=Small::get_n(); //…} 3.3.3全局、静态局部类对象 3.3.3.1局部静态类对象 在函数或复合语句内,用static关键字定义的对象。 例如:intfun() {staticData(1,89.0); return0;} 代码执行过程中第一次遇到该对象定义时,构造函数被调用,程序运行中仅调用一次;在程序运行结束前,调用析构函数,也只调用一次。 例如:classdemo{ public: demo(){cout<<”objectconstructor\n”;} ~demo(){cout<<”objectdestructor\n”}}; voidfun() {staticdemod1;} intmain(){ cout<<"mainstart\n"; fun(); cout<<"again\n"; fun();输出:mainstart cout<<"mainend\n";}objectconstructor again mainend objectdestructor3.3.3.2全局类对象 在函数外定义的对象。 构造函数在main函数执行前被调用,析构函数在程序运行结束前调用。 例如:classdemo{ public: demo(){cout<<"objectconstructor\n";} ~demo(){cout<<"objectdestructor\n";}}; intmain(){ cout<<"mainstart\n"; cout<<"mainend\n"; return0;}输出:objectconstructor staticdemod1;mainstart mainend objectdestructor3.4友元 3.4.1友元函数 3.4.1.1友元函数的声明 允许一个类授权其它的函数或类访问它的非公有成员。友元声明以friend关键字开头,只能出现在类的定义中。友元不是类的成员,不受访问说明符的影响。一般将类中所有友元关系的声明放在类头之后。 ¤语法:friend数据类型函数名(参数标); 3.4.1.2友元函数的参数 成员函数由对象调用,系统传递this指针使其可以访问对象的成员。友元函数没有this指针,要访问对象的成员,必须将要访问的对象作为参数传递。访问类对象的成员必须加上对象名和成员访问运算符。 例如:classData{ friendvoidget_val(Data&it