主函数调用: #include <iostream> #include "ballscore.h" using namespace std; void main() { ballscore jeff; cout<<jeff.GetGS(10,3); jeff.gradescore=5.5//想篡改jeff的平均成绩是错误的! cin.get(); } 在上面的代码中头文件和类的使用很好了体现了类的黑盒特性,谁也不能够在外部修改球员的平均成绩!
类体中的有一个地方要注意 const static int gbs = 5;//好球单位得分 const static int bbs = -3;//坏球单位扣分 之所以要修饰成const static 因为c++中类成员只有静态整形的常量才能够被初始化,到这里整个程序也就说完了,当然真正大比赛不可能是这样,只是为了说明问题就题命题而已,呵呵! 下面我们说一下关于类的作用域。
在说内容之前我们先给出这部分内容的一个完整代码,看讲解的是参照此一下代码。 #include <iostream> using namespace std; class ballscore { protected: const static int gbs = 5;//好球单位得分 const static int bbs = -3;//坏球单位扣分 float gradescore;//平均成绩 public: float GetGS(float goodball,float badball) //goodball为好球数量,badball为坏求数量 { int gradescore=0; //新定义一个和成员变量float gradescore相同名字的类成员函数局部变量 ballscore::gradescore = (goodball*gbs + badball*bbs) / (goodball + badball); //由于局部变量与类成员变量同名使用的时候必须在其前加上类名和域区分符 return ballscore::gradescore;//返回平均成绩 } }; int ballscore=0;//定义一个与类名称相同的普通全局变量 int test; void main() { class test//局部类的创建 { float a; float b; }; test test; ::test=1; //由于局部类名隐藏了外部变量使用需加域区分符 class ballscore jeff; //由于全局变量int ballsocre和类(ballsocre)名称相同,隐藏了类名称,这时候定义类对象需加class前缀以区分 cout<<jeff.GetGS(10,3); cin.get(); } 类的作用域是只指定义和相应的成员函数定义的范围,在该范围内,一个类的成员函数对同一类的数据成员具有无限制的访问权。
|