C++ 类和类的定义(二)

2014-11-24 09:41:19 · 作者: · 浏览: 1
对象的属性的,用户是无法访问它们的,只有成员函数或经特殊说明的函数才可以引用它们,它们是被用来隐藏的部分。保护类(protected)将在以后介绍。


  关键字public,private和protected被称为访问权限修饰符或访问控制修饰符。它们在类体内(即一对花括号内)出现的先后顺序无关,并且允许多次出现,用它们来说明类成员的访问权限。


  其中,<各个成员函数的实现>是类定义中的实现部分,这部分包含所有在类体内说明的函数的定义。如果一个成员函数的类体内定义了,实现部分将不出现。如果所有的成员函数都在类体内定义,则实现部分可以省略。


  下面给出一个日期类定义的例子:


  class TDate
  {
    public:
    void SetDate(int y, int m, int d);
    int IsLeapYear();
    void Print();
    private:
    int year, month, day;
  };


  //类的实现部分
  void TDate::SetDate(int y, int m, int d)
  {
    year = y;
    month = m;
    day = d;
  }


  int TDate::IsLeapYear()
  {
    return(year%4==0 && year0!=0) || (year@0==0);
  }


  void TDate::Print();
  {
    cout<<"."<
  }


  这里出现的作用域运算符::是用来标识某个成员函数是属于哪个类的。


  该类的定义还可以如下所示:


  class TDate
  {
    public:
    void SetDate(int y, int m, int d)
    {year=y; month=m; day=d;}


    int IsLeapYear()
    {return(year%4==0 && year0!=0) || (year@0==0);}


    void Print()
    {cout<


    private:
    int yeay, month, day;
  }


  这样对成员函数的实现(即函数的定义)都写在了类体内,因此类的实现部分被省略了。如果成员函数定义在类体外,则在函数头的前面要加上该函数所属类的标识,这时使用作用域运算符::。


  定义类时应注意的事项


  1、在类体中不允许对所定义的数据成员进行初始化。


  2、类中的数据成员的类型可以是任意的,包含整型、浮点型、字符型、数组、指针和引用等。也可以是对象。另一个类的对象,可以作该类的成员,但是自身类的对象是不可以的,而自身类的指针或引用又是可以的。当一个类的对象用为这个类的成员时,如果另一个类的的定义在后,需要提前说明。


  3、一般地,在类体内先说明公有成员,它们是用户所关心的,后说明私有成员,它们是用户不感兴趣的。在说明数据成员时,一般按数据成员的类型大小,由小至大说明,这样可提高时空利用率。


   4、经常习惯地将类定义的说明部分或者整个定义部分(包含实现部分)放到一个头文件中。