C++的“类”之类的定义

在C++中,一个独立“类”的声明格式一般如下:
  class  <类名>  // 声明部分
  {     

  private: 
 
       [<私有型数据和函数>]  
  public:     

      [<公有型数据和函数>]   

  protected:   
 
      [<保护型数据和函数>]
  }; 
<各个成员函数的实现> // 实现部分
 其中,class是类声明的关键字,class的后面是要声明的类名。类中的数据和函数都是类的成员,分别称为数据成员和成员函数。数据成员用来描述类状态等的属性,由于数据成员常用变量来定义,所以有时又将这样的数据成员称为成员变量。成员函数是用来对数据成员进行操作的,又称为方法。

注意:类体中最后一个花括号后面的分号“;”不能省略。

类中关键字public、private和protected声明了类中的成员与类外之间的关系,称为访问权限。对于public成员来说,它们是公有的,可以在类外访问。对于private成员来说,它们是私有的,不能在类外访问,数据成员只能由类中的函数所使用,成员函数只允许在类中调用。而对于protected成员来说,它们是受保护的,具有半公开性质,可在类中或其子类中访问。
成员函数既可以在类中进行定义,也可先在类中声明函数原型,然后在类外定义,这种定义又称为成员函数的实现。需要说明的是,成员函数在类外实现时,必须用作用域运算符“::”来告知编译系统该函数所属的类。即:

<函数类型>  <类名>::<函数名>( <形式参数表> )

例如,下面的类的定义示例代码: 
class CStuscore 
{
   public:  

       float Average(void);     // 求平均成绩:在类中声明  

       char * getName()     // 获取姓名:直接在类中完成
      {
             return strName;  

      }
  char * getNo()      // 获取学号:直接在类中完成 
  {  

  return strStuNO;  
 }
   private:  

char strName[12];    // 姓名   
char strStuNO[9];    // 学号
   private:  

float fScore[3];  // 三门课程成绩

};
float CStuscore::Average(void)   // 在类体外部定义

return (float)((fScore[0] + fScore[1] + fScore[2])/3.0);
}
本例中用关键词class声明了名为CStuscore的类。在类的声明中,描述学生的姓名、学号与三门课程成绩的数据strName、strStuNo、fScore用private定义为私有数据成员。这表明数据成员strName、strStuNo、fScore只能在类中使用,而不能在类外使用。 对学生成绩信息进行处理的函数Average、getName和getNo用关键词public声明成公有成员函数,这样就可在外部程序中通过getName和getNo函数分别来获取学生姓名和学号数据,通过Average函数获取学生的平均成绩。可见,类中的私有数据成员只能通过公有接口函数(像getName和getNo函数)来访问,从而保证数据的安全性。
类CStuscore中,成员函数getName和getNo的声明和定义是在类体中同时进行的,而函数Average是在类体中声明,在类体外实现的,注意函数Average实现中函数名前面一定要用域作用符“::”指明该函数所属的类。
习惯上,往往将类的声明和实现分开来编写代码,并将类的声明保存在.h文件中,而将类的实现保存在同名的.cpp文件中,这也是Visual C++的一种规范。

  



  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值