当前位置导航:炫浪网>>网络学院>>编程开发>>C++教程>>C++基础入门教程

C++类的设计习惯及头文件重复包含问题的解决

    在设计一个类的时候,通常是将类的定义及类成员函数的声明放到头文件(即。h文件)中,将类中成员函数的实现放到源文件(即。cpp)中。对于animal类需要animal.h和animal.cpp两个文件,同样,对于fish类需要fish.h和fish.cpp.对于main()函数,我们把它单独放到EX10.cpp文件中。

    往一个现有工程添加头文件(。h文件)或源文件(。cpp文件)有两种方式:一种是在打开的工程中,单击「File」→「New」,在左边的Files标签页下,选择C++ Header File或C++ Source File,然后在右边的File文本框中,输入头文件或源文件的文件名,如animal.h或animal.cpp,单击「OK」按钮。如图2.16所示。

C++类的设计习惯及头文件重复包含问题的解决

                                                                       图2.16 新建头文件或源文件

    另一种方式是在EX10的工程目录下,单击鼠标右键,选择「新建」→「文本文档」,然后将“新建文本文档。txt”改名为“animal.h”(因。h和。cpp文件都是文本格式的文件),依同样的方法,建立animal.cpp、fish.h、fish.cpp三个文件,然后在打开的工程中,选择「Project」→「Add To Project」→「Files」,选择animal.h、animal.cpp、fish.h、fish.cpp这四个文件,单击「OK」按钮,如图2.17所示。

C++类的设计习惯及头文件重复包含问题的解决

                                                                图2.17 添加头文件和源文件到工程中

    代码如例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 <iostream.h>    //在包含头文件时,<>和""有什么区别?<>和""表示编译器在搜索头文件时的顺序不同,<>表示从系统目录下开始搜索,然后再搜索PATH环境变量所列出的目录,不搜索当前目录;
                ""是表示先从当前目录搜索,然后是系统目录和PATH环境变量所列出的目录。所以如果我们知道头文件在系统目录下就可以直接用<>,这样可以加快搜索速度
  animal::animal()      //::叫做作用域标识符,用于指明一个函数属于哪个类或一个数据成员属于哪个类。
::前面如果不跟类名,表示是全局
  {              函数(即非成员函数)或全局数据
  }             
  animal::~animal()
  {
  }
  void animal::eat()     //注意:虽然我们在函数体中什么也没写,但仍然是实现了这个函数
  {
  }
  void animal::sleep()
  {
  }
  void animal::breathe()   //注意,在头文件(.h文件)中加了virtual后,在源文件(.cpp文件)中就不必再加virtual了
  {             
    cout<<"animal breathe"<<endl;
  }
  fish.h
  #include "animal.h"     //因fish类从animal类继承而来,要让编译器知道animal是一种类的类型,就要包含animal.h头文件
  class fish:public animal
  {
  public:
     void breathe();
  };
  fish.cpp
  #include "fish.h"
  #include <iostream.h>
  void fish::breathe()
  {
    cout<<"fish bubble"<<endl;
  }
EX10.cpp
  #include "animal.h"
  #include "fish.h"
  void fn(animal *pAn)
  {
    pAn->breathe();
  }
  void main()
  {
    animal *pAn;
    fish fh;
    pAn=&fh;
    fn(pAn);
  }

 

共2页 首页 上一页 1 2 下一页 尾页 跳转到
相关内容
赞助商链接