定义一个人员CPerson类,包含数据成员年龄和姓名,定义一个CPerson类的派生类教师CTeacher类,包含数据成员专业和职称。分别为两个类定义带参数的构造函数初始化,再分别定义display()函数输出信息。将display()函数定义为虚函数,并用CPerson类的指针分别指向CPerson类和CTeacher类的对象,实现多态。编写主函数测试。
时间: 2024-03-16 21:47:09 浏览: 86
好的,下面是代码实现:
```c++
#include <iostream>
#include <string>
using namespace std;
class CPerson {
protected:
int age;
string name;
public:
CPerson(int a, string n): age(a), name(n) {}
virtual void display() {
cout << "姓名:" << name << endl;
cout << "年龄:" << age << endl;
}
};
class CTeacher : public CPerson {
private:
string major;
string jobTitle;
public:
CTeacher(int a, string n, string m, string j): CPerson(a, n), major(m), jobTitle(j) {}
void display() {
cout << "姓名:" << name << endl;
cout << "年龄:" << age << endl;
cout << "专业:" << major << endl;
cout << "职称:" << jobTitle << endl;
}
};
int main() {
CPerson* person = new CPerson(20, "张三");
person->display();
cout << endl;
CTeacher* teacher = new CTeacher(30, "李四", "计算机科学", "教授");
CPerson* person2 = teacher;
person2->display();
delete person;
delete teacher;
return 0;
}
```
输出结果:
```
姓名:张三
年龄:20
姓名:李四
年龄:30
专业:计算机科学
职称:教授
```
在上面的代码中,`CPerson` 是一个基类,`CTeacher` 是一个派生类,派生类中添加了专业和职称两个数据成员。在 `CPerson` 类中,`display()` 函数被声明为虚函数,以实现运行时多态性。
在 `main()` 函数中,我们先创建一个 `CPerson` 类的对象,并使用 `display()` 函数输出其信息。然后,我们创建一个 `CTeacher` 类的对象,并将其指针赋给一个类型为 `CPerson*` 的指针变量。最后,我们使用该指针变量调用 `display()` 函数,这里实现了多态,即使用基类指针调用派生类虚函数,运行时可以动态地确定调用哪个函数。
阅读全文