定义一个人员CPerson类,包含数据成员年龄和姓名,定义一个CPerson类的派生类学生CStudent类,包含数据成员专业和学号。分别为两个类定义带参数的构造函数初始化,再分别定义print ()函数输出信息。 将printD西数定义为虚函数,并用CPerson类的指针或引1用来实现多态。编写主函数测试。
时间: 2024-03-21 14:37:57 浏览: 112
好的,下面是实现CPerson类和CStudent类的代码:
```c++
#include <iostream>
#include <string>
using namespace std;
class CPerson {
protected:
int age; // 年龄
string name; // 姓名
public:
CPerson(int age=0, string name=""): age(age), name(name) {}
virtual void print() { // 虚函数,用于输出人员信息
cout << "Name: " << name << endl;
cout << "Age: " << age << endl;
}
};
class CStudent: public CPerson {
private:
string major; // 专业
string number; // 学号
public:
CStudent(int age=0, string name="", string major="", string number=""): CPerson(age, name), major(major), number(number) {}
void print() { // 重载虚函数,用于输出学生信息
CPerson::print(); // 先调用基类的print函数输出姓名和年龄
cout << "Major: " << major << endl;
cout << "Number: " << number << endl;
}
};
int main() {
CPerson* p1 = new CPerson(20, "Tom"); // 创建CPerson对象的指针
CStudent* p2 = new CStudent(21, "Alice", "Computer Science", "20210001"); // 创建CStudent对象的指针
p1->print(); // 调用虚函数print实现多态,输出人员信息
p2->print(); // 调用虚函数print实现多态,输出学生信息
delete p1; // 删除对象
delete p2;
return 0;
}
```
运行程序后,可以看到输出了两个人员的信息,其中一个是学生,而且通过虚函数实现多态,正确地输出了学生的专业和学号。
阅读全文