在设计一个类的时候,通常是将类的定义及类成员函数的声明放到头文件(即.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所示。
图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所示。
图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);
}
版权与免责声明
1、本站所发布的文章仅供技术交流参考,本站不主张将其做为决策的依据,浏览者可自愿选择采信与否,本站不对因采信这些信息所产生的任何问题负责。
2、本站部分文章来源于网络,其版权为原权利人所有。由于来源之故,有的文章未能获得作者姓名,署“未知”或“佚名”。对于这些文章,有知悉作者姓名的请告知本站,以便及时署名。如果作者要求删除,我们将予以删除。除此之外本站不再承担其它责任。
3、本站部分文章来源于本站原创,本站拥有所有权利。
4、如对本站发布的信息有异议,请联系我们,经本站确认后,将在三个工作日内做出修改或删除处理。
请参阅权责声明!