在ubuntu终端建立一个文件夹 makefileTest,并进入其中,编写 3 个存在包含关系的 .c 或 .cpp 文件,使用 makefile 管理工程,比如: 编写一个C++ 的类A,具有私有的数据成员 i(为 int 型)、构造函数、析构函数,以及函数成员 dispA(),用来 打印数据成员 i,保存为 a.h 和 a.cpp ; 编写一个C++的类 B,具有私有的数据成员 j(为 int 型)和私有数据成员 a1(为类A的对象) ,具有相应构造 函数、析构函数,以及函数成员 dispB(),用来打印数据成 员 j,以及 a1.i。将该类分别保存为 b.h 和 b.cpp 新建 main.cpp,生成 B 的对象。
时间: 2023-04-09 07:04:47 浏览: 160
好的,让我来回答你的问题。
首先,我们可以使用以下命令在 Ubuntu 终端中建立一个名为 makefileTest 的文件夹,并进入其中:
```
mkdir makefileTest
cd makefileTest
```
接下来,我们可以编写三个存在包含关系的 .cpp 文件,分别为 a.cpp、b.cpp 和 main.cpp。其中,a.cpp 和 b.cpp 分别对应题目中的类 A 和类 B,而 main.cpp 则用于生成 B 的对象。
下面是 a.cpp 的代码:
```cpp
#include "a.h"
#include <iostream>
A::A(int i) : i(i) {}
A::~A() {}
void A::dispA() {
std::cout << "i = " << i << std::endl;
}
```
接下来是 b.cpp 的代码:
```cpp
#include "b.h"
#include <iostream>
B::B(int j, int i) : j(j), a1(i) {}
B::~B() {}
void B::dispB() {
std::cout << "j = " << j << ", a1.i = ";
a1.dispA();
}
```
最后是 main.cpp 的代码:
```cpp
#include "b.h"
int main() {
B b(2, 3);
b.dispB();
return 0;
}
```
接下来,我们可以编写一个名为 Makefile 的文件,用于管理工程。Makefile 的内容如下:
```makefile
CC = g++
CFLAGS = -c -Wall
LFLAGS = -Wall
all: main
main: a.o b.o main.o
$(CC) $(LFLAGS) a.o b.o main.o -o main
a.o: a.cpp a.h
$(CC) $(CFLAGS) a.cpp
b.o: b.cpp b.h a.h
$(CC) $(CFLAGS) b.cpp
main.o: main.cpp b.h
$(CC) $(CFLAGS) main.cpp
clean:
rm -rf *.o main
```
最后,我们可以使用以下命令编译并运行程序:
```
make
./main
```
程序的输出应该为:
```
j = 2, a1.i = i = 3
```
希望我的回答能够帮助到你。
阅读全文