江苏省高校计算机等级考试命题研究院 江苏省高校计算机等级考试辅导
vc++中类的解析

 类的定义

考点1 类的定义

  C++语言的类是一种用户自己定义的数据类型,和其他的数据类型不同的地方是组成这种类型的不仅可以有数据还可以有对数据进行操作的函数,它们分别叫做类的数据成员和类的函数成员。类是面向对象程序设计的核心,数据封装就是通过类来实现的。
  类是对一组性质相同对象的描述。类的定义形式一般分为说明部分和实现部分。说明部分是用来说明该类中的成员,实现部分是用来对成员函数的定义。类的一般定义形式为:
  class<类名>
  {
     private:
     <私有的数据和函数>
     public:
     <公有的数据和函数>
     protected:
     <保护的数据和函数>
 };
     <各个成员函数的实现>
  其中,类定义以关键字class开始,其后跟类名,类名必须是一个有效的C++标识符。
  类所说明的内容用花括号括起来,右花括号后的分号的作用是类说明语句的结束标志。“{}”之间的内容称为类体。关键字private,public和protected称为访问权限修饰符或访问控制修饰符,它们用于限制类成员的控制访问范围,如果没有使用多,则所有成员默认定义为private权限。这些关键字的声明顺序和次数都是任意的。<各个成员函数的实现>是类定义中的实现部分,这部分包含所有在类体内说明的成员函数的定义。各个成员函数的实体内类体内定义,又可以在类体外定义。如果一个成员函数在类体内定义,实现部分将不出现;如果所有的成员数都在类体内定义,则实现部分可以省略在类体内定义的成员函数都是内联函数。

 小提示:
   C++规定任何数据类型都必须先定义后使用,类也不例外。

考点2 类成员的访问控制

  类成员均具有一个属性,叫做访问控制权限。所以从访问权限上来讲,类的成员又分为私有的(private),公有的(public)和保护的( protected) 3类。公有成员定义了类的外部接口,只有公有成员才能被用户程序直接访问;私有成员定义了类的内部使用的数据和函数,私有成员只能被自己所属类的成员函数及友元函数访问;保护成员存取权限介于公有成员和私有成员之间,它在类的继承和派生中使用。

小提示:
  一个类可以没有私有成员,但是不能没有公有成员。

考点3 类的数据成员和类的函数成员

  1.类的数据成员
  数据成员是类的一个重要组成部分,它描述了对象的内部数据结构。类的数据成员是类的基础,应该正确、完整地定义类的数据成员。定义类的数据成员应注意:
  (1)在类体中不允许对所定义的数据成员进行初始化。
  (2)类中的数据成员的类型可以是任意的,包含整型、浮点型、字符型、数组、  指针和引用等,也可以是对象。另一个类的对象可以作为该类的成员,但是自身类的对象是不可以的,而自身类的指针或引用则是可以的。当一个类的对象作为这个类的成员时,如果另一个类的定义在后,则需要提前说明。
  2.类的函数成员
  函数成员实现对类中数据成员的操作,它描述了类的行为。由于对象的封装性,类的函数成员是对类的私有数据成员进行操作的惟一途径。类中所有的函数成员都必须在类体中说明,但函数成员的定义既可在类体内,也可在类体外。
  (1)在类体内直接给出函数的定义。例如,下面是在类体内给出类成员函数实现的例子:
       class Shijian{
          private:
             int Shi,Fen,Miao;
          public:


             void Set(int S, int F, int M)//可省略此成员函数的变量标识符
        {Shi=S;
             Fen=F;
             Miao=M;}
        void Display(){
             cout<<"现在时间是:";
             cout<            }
        };
  (2)在类体外给出函数的定义。定义形式如下:
     <返回类型><类名>::<成员函数名>(<参数表>)
     {<成员函数体>}
  成员函数定义的结构与普通函数不同之处是在返回类型和函数名之间加了一个类名和双冒号“::”。::是作用域运算符,用来标识成员函数或数据成员是属于哪个类的实理成员函数时参数表中的形参变量标识符可以省略。例如,实现上例中的成员函数Diaplay():
  void Shijian::Disptay()
  {cout<<"现在时间是:";
     cout<  另外,类成员函数同普通函数一样,也可以进行重载及其默认参数。

小提示:
  类的每个成员函数在说明中最后的分号不可省略,但在类体内实现时省略分号。