龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > C/C++开发 >

C++类的设计习惯及头文件重复包含问题的解决[组图](2)

时间:2009-12-22 15:42来源:未知 作者:admin 点击:
分享到:
代码如例2-24所示。 例2-24 animal.h //在头文件中包含类的定义及类成员函数的声明 class animal { public: animal(); ~animal(); void eat(); void sleep(); virtual void breathe();

  代码如例2-24所示。

  例2-24

  animal.h

  //在头文件中包含类的定义及类成员函数的声明

  class animal

  {

  public:

    animal();

    ~animal();

    void eat();

    void sleep();

    virtual void breathe();

  };

animal.cpp

  //在源文件中包含类中成员函数的实现

  #include "animal.h"     //因为在编译animal.cpp时,编译器不知道animal到底是什么,所以要包含animal.h,这样,编译器就知道animal是一种类的类型

  #include     //在包含头文件时,<>和""有什么区别?<>和""表示编译器在搜索头文件时的顺序不同,<>表示从系统目录下开始搜索,然后再搜索PATH环境变量所列出的目录,不搜索当前目录;

                ""是表示先从当前目录搜索,然后是系统目录和PATH环境变量所列出的目录。所以如果我们知道头文件在系统目录下就可以直接用<>,这样可以加快搜索速度

  animal::animal()      //::叫做作用域标识符,用于指明一个函数属于哪个类或一个数据成员属于哪个类。

::前面如果不跟类名,表示是全局

  {              函数(即非成员函数)或全局数据

  }             

  animal::~animal()

  {

  }

  void animal::eat()     //注意:虽然我们在函数体中什么也没写,但仍然是实现了这个函数

  {

  }

  void animal::sleep()

  {

  }

  void animal::breathe()   //注意,在头文件(.h文件)中加了virtual后,在源文件(.cpp文件)中就不必再加virtual了

  {             

    cout<<"animal breathe"<

  }

  fish.h

  #include "animal.h"     //因fish类从animal类继承而来,要让编译器知道animal是一种类的类型,就要包含animal.h头文件

  class fish:public animal

  {

  public:

     void breathe();

  };

  fish.cpp

  #include "fish.h"

  #include

  void fish::breathe()

  {

    cout<<"fish bubble"<

  }

EX10.cpp

  #include "animal.h"

  #include "fish.h"

  void fn(animal *pAn)

  {

    pAn->breathe();

  }

  void main()

  {

    animal *pAn;

    fish fh;

    pAn=&fh;

    fn(pAn);

  }

精彩图集

赞助商链接