请设计人员和学生类,并通过测试程序,具体要求如下: 人员类(person)是基类,成员包含: 保护成员变量,姓名(name,string类型) 保护成员变量,年龄(age,int类型) 公有构造函数 公有函数display 学生类(student)从人员类公有继承,成员包含: 私有成员变量,学号(id,string类型) 公有构造函数 公有函数display
时间: 2023-05-31 18:17:46 浏览: 1460
设计一个人类person,包括人员编号和姓名等数据成员以及相关的成员函数
### 回答1:
人员类(Person):
成员变量:
- 姓名(name,string类型,保护)
- 年龄(age,int类型,保护)
构造函数:
- 公有构造函数
成员函数:
- display(),公有函数,用于显示人员的姓名和年龄信息
学生类(Student):
继承关系:
- 公有继承自人员类(Person)
成员变量:
- 学号(id,string类型,私有)
构造函数:
- 公有构造函数,用于初始化学号和人员信息
成员函数:
- display(),公有函数,用于显示学生的姓名、年龄和学号信息
测试程序:
#include <iostream>
#include <string>
using namespace std;
class Person {
protected:
string name;
int age;
public:
Person() {}
Person(string n, int a) : name(n), age(a) {}
void display() {
cout << "姓名:" << name << endl;
cout << "年龄:" << age << endl;
}
};
class Student : public Person {
private:
string id;
public:
Student() {}
Student(string n, int a, string i) : Person(n, a), id(i) {}
void display() {
Person::display();
cout << "学号:" << id << endl;
}
};
int main() {
Student s("张三", 18, "20210001");
s.display();
return ;
}
输出结果:
姓名:张三
年龄:18
学号:20210001
### 回答2:
人员类(person)可以定义如下:
```cpp
class person {
protected:
string name;
int age;
public:
person(string n, int a):name(n), age(a){}
void display() {
cout << "name: " << name << endl;
cout << "age: " << age << endl;
}
};
```
其中,保护成员变量姓名(name)和年龄(age)是通过构造函数赋初值。
学生类(student)可以定义如下:
```cpp
class student : public person {
private:
string id;
public:
student(string n, int a, string i):person(n, a), id(i){}
void display() {
person::display();
cout << "id: " << id << endl;
}
};
```
其中,私有成员变量学号(id)是通过构造函数赋初值,并通过公有继承方式获得人员类的成员函数。
为了验证该程序是否正确,可以定义测试函数:
```cpp
int main() {
person p("tom", 20);
p.display();
cout << "------------------------------" << endl;
student s("jerry", 18, "001");
s.display();
return 0;
}
```
输出结果为:
```
name: tom
age: 20
------------------------------
name: jerry
age: 18
id: 001
```
可以看到,人员类和学生类的成员变量和成员函数可以正确的输出,并且学生类通过继承方式正确继承了人员类的成员函数。
### 回答3:
人员类(person)是一个基类,包含两个保护成员变量:姓名(name,string类型)和年龄(age,int类型),以及一个公有构造函数。在基类中,我们可以创建一个display函数,用于显示人员的姓名和年龄。该函数可以在子类中被重写。
下面是人员类(person)的定义:
```c++
class person {
protected:
string name;
int age;
public:
person(string name, int age) : name(name), age(age) {}
virtual void display() {
cout << "Name: " << name << endl;
cout << "Age: " << age << endl;
}
};
```
学生类(student)从人员类公有继承。除了继承自人员类的公有和保护成员,学生类还有一个私有成员变量:学号(id,string类型)。学生类有一个公有构造函数,并且可以重写基类的display函数来显示学生的信息。
下面是学生类(student)的定义:
```c++
class student : public person {
private:
string id;
public:
student(string name, int age, string id) : person(name, age), id(id) {}
void display() {
cout << "ID: " << id << endl;
person::display();
}
};
```
现在,我们可以编写一个测试程序,创建一些人员和学生对象,并使用display函数打印它们的信息。下面是测试程序的代码:
```c++
int main() {
person p1("John", 30);
student s1("Alice", 20, "123456");
p1.display();
cout << endl;
s1.display();
return 0;
}
```
程序的输出如下:
```
Name: John
Age: 30
ID: 123456
Name: Alice
Age: 20
```
我们可以看到,我们成功地创建了一个人员类(person)和一个学生类(student),并使用display函数打印了它们的信息。由于学生类重写了display函数,所以它打印了学生的ID以及从基类继承而来的姓名和年龄。
阅读全文