对类中的数据成员进行初始化的条件1.doc
上传人:yy****24 上传时间:2024-09-10 格式:DOC 页数:2 大小:32KB 金币:16 举报 版权申诉
预览加载中,请您耐心等待几秒...

对类中的数据成员进行初始化的条件1.doc

对类中的数据成员进行初始化的条件1.doc

预览

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

16 金币

下载此文档

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

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

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

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

C++标准9.4.2.4对类中的数据成员进行初始化的条件是:1必须是一个(static)静态成员。对于非静态成员不能在类定义中进行初始化。2静态成员的声明中必须是有const限定。非const的静态成员不能在类定义中进行初始化。3静态成员的类型必须为整型或者是枚举型。其它类型(如浮点型、数组、指针等)不能在类定义中进行初始化。4只能使用一个整型常量表达式(integralconstantexpression)来进行初始化。例如:#include<iostream>usingnamespacestd;classballscore{protected:conststaticintgbs=5;//好球单位得分conststaticintbbs=-3;//坏球单位扣分floatgradescore;//平均成绩public:floatGetGS(floatgoodball,floatbadball)//goodball为好球数量,badball为坏求数量{intgradescore=0;//新定义一个和成员变量floatgradescore相同名字的类成员函数局部变量ballscore::gradescore=(goodball*gbs+badball*bbs)/(goodball+badball);//由于局部变量与类成员变量同名使用的时候必须在其前加上类名和域区分符returnballscore::gradescore;//返回平均成绩}};intballscore=0;//定义一个与类名称相同的普通全局变量inttest;voidmain(){classtest//局部类的创建{floata;floatb;};testtest;::test=1;//由于局部类名隐藏了外部变量使用需加域区分符classballscorejeff;//由于全局变量intballsocre和类(ballsocre)名称相同,隐藏了类名称,这时候定义类//对象需加class前缀以区分cout<<jeff.GetGS(10,3);cin.get();}上面的代码报错如下:Compiling...Text1.cppD:\VC++6.0\MyProjects\std\Text1.cpp(6):errorC2258:illegalpuresyntax,mustbe'=0'D:\VC++6.0\MyProjects\std\Text1.cpp(6):errorC2252:'gbs':purespecifiercanonlybespecifiedforfunctionsD:\VC++6.0\MyProjects\std\Text1.cpp(7):errorC2258:illegalpuresyntax,mustbe'=0'D:\VC++6.0\MyProjects\std\Text1.cpp(7):errorC2252:'bbs':purespecifiercanonlybespecifiedforfunctionsErrorexecutingcl.exe.注:vc6对标准c++的支持不太好,但在vs2005或08下运行正常。