首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

如何避免重复包含一个头文件?#ifndef #define #endif

如何避免重复包含一个头文件?#ifndef #define #endif

//在头文件中包含类的定义及类成员函数的声明
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;
}
返回列表