如何避免重复包含一个头文件?#ifndef #define #endif
![Rank: 6](images/default/star_level3.gif) ![Rank: 6](images/default/star_level2.gif)
- UID
- 856476
|
![](http://images.eccn.com/silabs/silicon_chip_980x60_202203.jpg)
如何避免重复包含一个头文件?#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;
}
|
|
|
|
|
|