快速业务通道

C++面向对象编程入门:类(class)

作者 佚名技术 来源 程序设计 浏览 发布时间 2012-06-30
就是private就是私有的,私有声明可以保护成员不能够被外部访问,但在c++还有一个修饰符,它具有和private相似的性能,它就是protected修饰符。

在这里我们简单说明一下,他们三着之间的差别:

在类的private:节中声明的成员(无论数据成员或是成员函数)仅仅能被类的成员函数和友元访问。

在类的protected: 节中声明的成员(无论数据成员或是成员函数)仅仅能被类的成员函数,友元以及子类的成员函数和友元访问。

在类的public:节中声明的成员(无论数据成员或是成员函数)能被任何人访问。

由于private和protected的差别主要是体现在类的继承中,现在的教程还没有设计到友元和子类所以这里不做深入讨论,但上面的三点务必记得,在以后的教程中我们会回过头来说明的。

总的来说,类成员的保护无非是为了以下四点!

1.相对与普通函数和其它类的成员函数来说,保护类的数据不能够被肆意的篡改侵犯!

2.使类对它本身的内部数据维护负责,只有类自己才能够访问自己的保护数据!

3.限制类的外部接口,把一个类分成公有的和受保护的两部分,对于使用者来说它只要会用就可以,无须了解内部完整结构,起到黑盒的效果。

4.减少类与其它代码的关联程,类的功能是独立的,不需要依靠应用程序的运行环境,这个程序可以用它,另外一个也可以用它,使得你可以轻易的用一个类替换另一个类。

下面为了演示类成员的保护特性,我们来做一个球类游戏!

我们设计一个类,来计算球员的平均成绩,要求在外部不能够随意篡改球员的平均成绩。

我们把该类命名为ballscore并且把它放到ballscore.h的有文件中!

class ballscore
{
protected:
const static int gbs = 5; //好球单位得分
const static int bbs = -3; //坏球单位扣分
float gradescore; //平均成绩
public:
float GetGS(float goodball,float badball) //goodball为好球数量,badball为坏求数量
{
gradescore = (goodball*gbs + badball*bbs) / (goodball + badball);
return gradescore; //返回平均成绩
}
};

主函数调用:

#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 b

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号