解决这个文件的问题 要求有代码
时间: 2024-10-23 14:13:24 浏览: 9
为了完成《实验3 继承与派生》的要求,下面提供了一个示例代码,该代码实现了 `Person` 和 ``Student` 类的设计以及不同继承方式的应用:
### 示例代码
```cpp
#include <iostream>
using namespace std;
// 基类 Person
class Person {
private:
string name;
int age;
public:
// 构造函数
Person(string n, int a) : name(n), age(a) {}
// 显示信息的函数
void show() const {
cout << "Name: " << name << ", Age: " << age << endl;
}
};
// 派生类 Student - 公用继承
class StudentPublic : public Person {
private:
string major;
public:
// 构造函数
StudentPublic(string n, int a, string m) : Person(n, a), major(m) {}
// 显示信息的函数
void show() const {
Person::show(); // 调用基类的显示函数
cout << "Major: " << major << endl;
}
};
// 派生类 Student - 私用继承
class StudentPrivate : private Person {
private:
string major;
public:
// 构造函数
StudentPrivate(string n, int a, string m) : Person(n, a), major(m) {}
// 显示信息的函数
void show() const {
Person::show(); // 调用基类的显示函数
cout << "Major: " << major << endl;
}
};
int main() {
// 创建 Person 对象
Person p("Alice", 30);
p.show();
// 创建公用继承的 Student 对象
StudentPublic sp("Bob", 20, "Computer Science");
sp.show();
// 创建私用继承的 Student 对象
StudentPrivate spv("Charlie", 22, "Mathematics");
spv.show();
return 0;
}
```
### 说明
1. **Person 类**:
- 包含两个私有数据成员 `name` 和 `age`。
- 提供一个构造函数用于初始化这些成员。
- 提供一个 `show()` 函数用于显示个人信息。
2. **StudentPublic 类**:
- 通过公用继承 (`public`) 从 `Person` 类派生。
- 添加一个新的私有数据成员 `major` 表示学生的专业。
- 提供一个构造函数用于初始化所有成员。
- 重写 `show()` 函数,先调用基类的 `show()` 函数,再显示专业的信息。
3. **StudentPrivate 类**:
- 通过私用继承 (`private`) 从 `Person` 类派生。
- 添加一个新的私有数据成员 `major` 表示学生的专业。
- 提供一个构造函数用于初始化所有成员。
- 重写 `show()` 函数,先调用基类的 `show()` 函数,再显示专业的信息。
4. **main() 函数**:
- 创建 `Person` 对象并调用其 `show()` 函数。
- 创建 `StudentPublic` 对象并调用其 `show()` 函数。
- 创建 `StudentPrivate` 对象并调用其 `show()` 函数。
通过以上代码,可以满足实验要求中的各项任务。希望这对你有所帮助!
阅读全文