```#include <iostream> #include <string> using namespace std; //基类People class People { public: People(string name, int age); void display(); protected: string m_name; int m_age; }; People::People(string name, int age) : m_name(name), m_age(age) {} void People::display() { cout << m_name << "今年" << m_age << "岁了,是个无业游民。" << endl; } //派生类Teacher class Teacher : public People { public: Teacher(string name, int age, int salary); void display(); private: int m_salary; }; Teacher::Teacher(string name, int age, int salary) : People(name, age), m_salary(salary) {} void Teacher::display() { cout << m_name << "今年" << m_age << "岁了,是一名教师,每月有" << m_salary << "元的收入。" << endl; } int main() { People* p = new People("王志刚", 23); p->display(); p = new Teacher("赵宏佳", 45, 8200); p->display(); return 0; }```
时间: 2024-03-26 11:34:22 浏览: 18
这段代码是一个简单的 C++ 多态示例,定义了一个基类 `People` 和一个派生类 `Teacher`,其中 `Teacher` 继承了 `People`。
在 `People` 类中,定义了一个构造函数 `People(string name, int age)` 和一个 `display()` 函数,用于显示人员的基本信息。
在 `Teacher` 类中,定义了一个构造函数 `Teacher(string name, int age, int salary)` 和一个 `display()` 函数,用于显示教师的信息。
在 `main()` 函数中,首先创建了一个基类指针 `p`,并将其指向一个 `People` 类型的对象,然后调用 `display()` 函数显示该对象的信息。接着,将 `p` 指向一个 `Teacher` 类型的对象,并再次调用 `display()` 函数显示该对象的信息。由于 `Teacher` 类继承了 `People` 类,因此可以通过基类指针来访问 `Teacher` 类的成员函数。
输出结果为:
```
王志刚今年23岁了,是个无业游民。
赵宏佳今年45岁了,是一名教师,每月有8200元的收入。
```
相关问题
R6-1 写出派生类构造方法(C++) 分数 10 全屏浏览题目 切换布局 作者 周强 单位 青岛大学 裁判测试程序样例中展示的是一段定义基类People、派生类Student以及测试两个类的相关C++代码,其中缺失了部分代码,请补充完整,以保证测试程序正常运行。 函数接口定义: 提示: 观察类的定义和main方法中的测试代码,补全缺失的代码。 裁判测试程序样例: 注意:真正的测试程序中使用的数据可能与样例测试程序中不同,但仅按照样例中的格式调用相关函数。 #include <iostream> using namespace std; class People{ private: string id; string name; public: People(string id, string name){ this->id = id; this->name = name; } string getId(){ return this->id; } string getName(){ return name; } }; class Student : public People{ private: string sid; int score; public: Student(string id, string name, string sid, int score) /** 你提交的代码将被嵌在这里(替换此行) **/ } friend ostream& operator <<(ostream &o, Student &s); }; ostream& operator <<(ostream &o, Student &s){ o << "(Name:" << s.getName() << "; id:" << s.getId() << "; sid:" << s.sid << "; score:" << s.score << ")"; return o; } int main(){ Student zs("370202X", "Zhang San", "1052102", 96); cout << zs << endl; return 0; } 输入样例: (无) 输出样例: (Name:Zhang San; id:370202X; sid:1052102; score:96) 代码长度限制 16 KB 时间限制 100 ms 内存限制 2 MB
class Student : public People{
private:
string sid;
int score;
public:
Student(string id, string name, string sid, int score) : People(id, name){
this->sid = sid;
this->score = score;
}
friend ostream& operator <<(ostream &o, Student &s);
};
C++继承和派生练习(一)--关于从people(人员)类派生出student(学生)类等
好的,关于从people(人员)类派生出student(学生)类,你可以参考以下练习:
```c++
#include <iostream>
#include <string>
using namespace std;
// 人员类
class People {
protected:
string name; // 姓名
int age; // 年龄
string gender; // 性别
public:
People(string n, int a, string g) : name(n), age(a), gender(g) {}
void showInfo() {
cout << "姓名:" << name << endl;
cout << "年龄:" << age << endl;
cout << "性别:" << gender << endl;
}
};
// 学生类
class Student : public People {
private:
string school; // 学校
int grade; // 年级
public:
Student(string n, int a, string g, string s, int gr) : People(n, a, g), school(s), grade(gr) {}
void showInfo() {
People::showInfo();
cout << "学校:" << school << endl;
cout << "年级:" << grade << endl;
}
};
int main() {
// 创建一个学生对象
Student s("小明", 18, "男", "清华大学", 3);
s.showInfo(); // 输出学生信息
return 0;
}
```
在这个示例中,我们从People(人员)类派生出Student(学生)类,Student(学生)类继承了People(人员)类的属性和方法,并添加了自己的属性和方法。在main()函数中,我们创建了一个学生对象,并使用showInfo()方法输出学生的信息,包括从People(人员)类继承的信息和Student(学生)类自己的信息。
这个示例可以帮助你理解C++中继承和派生的概念,以及如何使用基类的方法和属性。希望能对你有所帮助!