设为首页 加入收藏

TOP

13.1.1 类的声明
2013-10-07 01:14:06 来源: 作者: 【 】 浏览:81
Tags:13.1.1 声明

13.1.1  类的声明

C++(www.cppentry.com)中,新的数据类型可以用Class来构造。类的声明语法与C语言中的Struct声明类似,只是Class还包含函数声明。

【示例13-1】 定义point类。

  1. class point  
  2. {  
  3.     int x,y;                            //数据  
  4. public:                                 //访问规则  
  5.     void setpoint(int,int);             //数据上的操作  

分析:该示例声明了一个名为point的类。它包含了数据为x、y,还包含了一个名为setpoint()的函数。函数被public关键字说明为公有的,数据没有被说明,但默认也为公有的。

下面再以一个更完整的示例进一步来说明类的声明方法。

【示例13-2】 声明一个简单的student学生类。

  1. class student  
  2. {  
  3. private:                                //访问规则  
  4.     int id;                             //学号  
  5.     char* name;                         //姓名  
  6.     float chinese,english,math;         //语文、英语、数学三门课程成绩  
  7. public:                                 //访问规则  
  8.     student();                          //构造函数  
  9.     student(int,char *,float,float,float);  
  10.                                         //构造函数,设置学号,姓名,三门课程成绩  
  11.     ~student();                             //析构函数  
  12.     void setid(int);                    //设置学号  
  13.     void setname(char *);               //设置姓名  
  14.     void setscore(float,float,float);   //设置课程分数  
  15.      float sum();                       //求三门课程总分  
  16.     float average();                    //求三门课程平均分  

分析:在这个类中,共有4个数据,分别是id、name、chinese、english、math,用于记录学生的学号、姓名和三门课程的成绩。它们被关键字private说明为私有的,即这些数据只能被类的成员函数和友元函数(参见13.1.7节)访问。

类中声明了8个函数,用关键字public说明为公有的。第1个函数是构造函数,负责构造类对象,在定义对象时由系统自动调用。第2个函数也是构造函数,但是与第1个的形式不一样,它带了参数。这属于重载现象,本书后面的章节中有专门讲解。构造函数的名字必须和类的名字相同。

第3个函数是析构函数,标志是前面有一个'~'符。该函数在销毁对象时自动被调用,负责对象销毁后的善后工作。析构函数必须是类的名称前加'~'符。第4、5、6这3个函数负责私有属性的访问。因为属性是私有,所以只有通过student类提供的这3个函数才能从类的外部访问到它们。最后2个函数负责具体的计算工作,分别计算求总分和求平均分。

除了该示例中的限定符public和private外,还有一个限定符是protected。它们都用来支持信息的隐藏机制,将类的成员分成了3类:公有成员、私有成员和保护成员。

公有成员(包括类的属性和方法):提供了类的外部界面,它允许类的使用者来访问它。

私有成员(包括类的属性和方法):只能被该类的成员函数访问,也就是说只有类本身能够访问它,任何类以外的函数对私有成员的访问都是非法的。当私有成员处于类声明中的第一部分时,此关键字可以省略。

保护成员:对于派生类来说,保护成员就像是公有成员,可以任意访问。但对于程序的其他部分来说,就像是私有成员,不允许被访问。

假设程序中有一个函数,它直接访问并操作某类的数据成员,一旦该类的数据成员被修改或者被删除,那么这个函数很可能需要被重写。如果程序中存在大量这样的函数,就会增加软件的开发和维护成本。此时,可以通过访问限定符将类的数据成员定义为私有成员,然后在类中定义一个公有的成员函数,访问并操作类中的私有属性。这样程序中的函数无法直接访问私有的数据,只有通过公有成员函数才能访问并且操作它们。

例如,为了能够访问student类中的语文成绩,需要增加一个公有的成员方法getchinese()。如果类中的数据成员被修改,那么只需要修改相应的公有成员方法,而不必改动程序中的函数。

【示例13-3】 增加成员chinese的访问函数。

  1. class student  
  2. {  
  3. private:  
  4.     float chinese;          //私有属性  
  5. public:  
  6.     float getchinese()      //私有成员chinese的访问函数  
  7.     {  
  8.         return chinese  
  9.     }     

分析:该类声明了一个私有数据,用来记录语文成绩。由于是私有的,所以不能从外部访问,必须通过公有函数getchinese()来访问。

【责任编辑:云霞 TEL:(010)68476606】

回书目   上一节   下一节

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇13.1.2 类的属性 下一篇13.1.8 修饰符

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: