编写程序。要求: (1)定义一个基类Student, 类内有保护数据成员num (学号)、name (姓名),公有成员包括构造函数、show()函数。构造函数带2个参数用于定义对象时赋初值,show() 函数作用是显示学生信息,即num、name 的值。 (2)定义一个派生类Student1, Student1公有继承自Student类。Student1类新增私有数据成员age (年龄)、addr (地址)以及子对象monitor (班长,Student 类型),新增公有成员包括构造函数、show()函数。 构造函数带6个参数用于定义对象时赋初值,show() 函数作用是显示学生的所有信息,即本人的num、name、 age、addr 以及班长的num、name 。 (3)在main()函数定义Student1类的对象stud1并赋初值,调用show()函数显示该学生的所有信息。
时间: 2024-03-30 10:35:14 浏览: 85
下面是对应的程序实现:
```cpp
#include <iostream>
#include <string>
using namespace std;
class Student {
protected:
int num; // 学号
string name; // 姓名
public:
Student(int n, string na) : num(n), name(na) {} // 构造函数
void show() { // 显示学生信息
cout << "学号:" << num << endl;
cout << "姓名:" << name << endl;
}
};
class Student1 : public Student {
private:
int age; // 年龄
string addr; // 地址
Student monitor; // 班长,Student类型
public:
Student1(int n, string na, int a, string ad, int mNum, string mName) : Student(n, na), age(a), addr(ad), monitor(mNum, mName) {} // 构造函数
void show() { // 显示学生所有信息
Student::show(); // 调用基类函数显示学号和姓名
cout << "年龄:" << age << endl;
cout << "地址:" << addr << endl;
cout << "班长学号:" << monitor.num << endl;
cout << "班长姓名:" << monitor.name << endl;
}
};
int main() {
Student1 stud1(1001, "小明", 18, "北京市海淀区", 1002, "小红");
stud1.show();
return 0;
}
```
在main()函数中定义了一个Student1类型的对象stud1,并通过构造函数传递了6个参数来初始化stud1对象的各个数据成员。然后调用show()函数来显示该学生的所有信息。注意在Student1类中,构造函数中使用了初始化列表来初始化基类的num和name数据成员,同时也初始化了其他的数据成员。在show()函数中,首先调用了基类的show()函数,然后输出了新增的数据成员age、addr以及班长monitor的num和name。其中,班长monitor是一个Student类型的子对象。
阅读全文