在规模比较大的c++项目中,往往需要多个源程序文件,每个源程序文件成为一个编译单元。比较惯用的做法是将类的定义写在头文件中,使用该类的编译单元则包含这个头文件。通常一个项目只少划分3个文件:类文件的定义(.h文件),类实现文件(,cpp文件)和类的使用文件(*.cpp,主函数文件)。那么对于更为复杂的程序,每一个类都有单独的定义和实现的文件。采用这样的组织结构,可以对不同的文件进行单独编写,编译,最后再链接,同时充分利用类的封装特性,在程序的调试,修改时只对其中某一个类的定义和实现进行修改,其余部分不用改动。
接下来用Point类实现以上功能。
①.首先打开vc6.0新建一个项目,可以命名为example。
②.新建一个头文件,可命名为Point。(不用加后缀)
③.新建一个源文件,文件名须和头文件相同,命名为Point。(同样不用加后缀)
④.新建一个源文件,用来写主函数,命名为my main。(不用加后缀)
首先在头文件也就是Point.h中写入类的定义:
class Point
{
public:
Point(int x=0,int y=0):x(x),y(y){}
Point(const Point &p);
~Point() {count--;}
int getX() const {return x;}
int getY() const {return y;}
static void showCount();
private:
int x,y;
static int count;
};
接下来在源文件Point.cpp中写类的实现:
这里需要注意的是要写#include"Point.h"这个语句,意为将自己定义的头文件包含进来。
#include"Point.h"
#include<iostream>
using namespace std;
int Point::count=0;
Point::Point(const Point &p):x(p.x),y(p.y) {
count++;
}
void Point::showCount()
{
cout<<" Object count="<<count<<endl;
}
最后在my main中写入主函数:
#include"Point.h"
#include<iostream>
using namespace std;
int main()
{
Point a(4,5);
cout<<"Point A:"<<a.getX()<<","<<a.getY();
Point::showCount();
Point b(a);
cout<<"Point B:"<<b.getX()<<","<<b.getY();
Point::showCount();
return 0;
}
这样就完成了一个基本的的多文件操作,接下来编译运行即可。