C++程序设计中常把类声明和成员函数定义分离开来,一个C++程序由3部分组成:
(1)类声明头文件(后缀为 .h)。
(2)类实现文件(后缀为 .cpp),它包括类成员函数的定义。
(3)类使用文件(后缀为 .cpp),即主函数文件。
来看看这个简单的题目:找出10个整型数值的最大值。
用多文件程序可以这样写:
//arraymax.h 类声明
#include <iostream>
using namespace std;
class Array_max
{
public:
void set_array(void);
void select_arraymax(void);
void display_arraymax(void);
private:
int array[10];
int max;
int n;
};
//arraymax.cpp 类成员函数定义
#include <iostream>
using namespace std;
#include "arraymax.h"
void Array_max::set_array(void)
{
for(int i = 0;i < 10;i++)
{
cout<<"Input array["<<i<<"]"<<endl;
cin>>array[i];
}
}
void Array_max::select_arraymax(void)
{
max = array[0];
for(int i = 1;i < 10;i++)
{
if(max < array[i])
{max = array[i];
n = i;}
}
}
void Array_max::display_arraymax(void)
{
cout<<"arraymax is array["<<n<<"] = "<<max<<endl;
}
<pre class="cpp" name="code">//main.cpp
#include <iostream>
using namespace std;
#include "arraymax.cpp"
int main()
{
Array_max array1;
array1.set_array();
array1.select_arraymax();
array1.display_arraymax();
return 0;
}
直接编译就可以,Linux下执行g++ -o main main.cpp生成main文件,执行./main就能运行了,但是这样的话主函数包含的是.cpp了,感觉很怪异。还有一种方法可以解决,修改主函数为:
//main.cpp
#include <iostream>
using namespace std;
#include "arraymax.h"
int main()
{
Array_max array1;
array1.set_array();
array1.select_arraymax();
array1.display_arraymax();
return 0;
}
分别生成3个文件的目标文件(后缀 .o)
顺序执行
g++ -c main.cpp
g++ -c arraymax.h
g++ -c arraymax.cpp
最后链接成一个文件,比如就叫abc
执行
g++ -o abc main.o arraymax.o
生成abc文件
运行
./abc就能得到第一个文件main的效果。