将本章的例2.4 改写为一个多文件的程序: (1) 将类定义放在头文件arraymax.h中; (2) 将成员函数定义放在源文件arraymax.cpp中; (3) 主函数放在源文件file1.cpp中。 请写出完整的程序,上机调试并运行。
时间: 2024-10-13 07:14:38 浏览: 41
为了将例2.4改写为一个多文件的程序,你需要按照以下步骤操作:
**步骤1**: 创建`arraymax.h`头文件,声明数组最大值类及其公共接口:
```cpp
// arraymax.h
#ifndef ARRAYMAX_H
#define ARRAYMAX_H
class ArrayMax {
public:
// 构造函数
ArrayMax(int size);
// 获取数组的最大值
int getMax() const;
private:
int* arr; // 数组指针
int size; // 数组大小
};
#endif // ARRAYMAX_H
```
**步骤2**: 创建`arraymax.cpp`源文件,实现成员函数:
```cpp
// arraymax.cpp
#include "arraymax.h"
ArrayMax::ArrayMax(int size) : arr(new int[size]), size(size) {
// 初始化数组元素
for (int i = 0; i < size; ++i) {
arr[i] = i * i;
}
}
int ArrayMax::getMax() const {
int max_val = arr[0];
for (int i = 1; i < size; ++i) {
if (arr[i] > max_val) {
max_val = arr[i];
}
}
return max_val;
}
```
**步骤3**: 创建`file1.cpp`主函数,这里作为入口点:
```cpp
// file1.cpp
#include "arraymax.h"
#include <iostream>
int main() {
ArrayMax am(5); // 创建一个数组最大值类的对象,数组大小为5
std::cout << "The maximum value in the array is: " << am.getMax() << std::endl;
delete[] am.arr; // 释放动态分配的内存
return 0;
}
```
**上机调试及运行**:
1. 把这三段代码分别保存到对应的三个文件夹里,比如`arraymax.h`, `arraymax.cpp`, 和 `file1.cpp`。
2. 编译文件`arraymax.cpp`生成`arraymax.o`或`arraymax.obj`(取决于所使用的编译器),链接文件`file1.cpp`,如`g++ file1.cpp -o program`(Unix/Linux系统)或`cl file1.cpp /link arraymax.obj`(Windows系统)。
3. 运行生成的可执行文件`program`,你应该能看到输出结果"the maximum value in the array is: ...".
**相关问题--:**
1. 为什么要将类的定义和实现分开到不同的文件?
2. 如果我想扩展这个类,需要怎么做才能保持程序结构清晰?
3. 当处理大型项目时,如何有效地组织和管理多文件代码?
阅读全文