声明一个学生类,包含学生的学号、姓名、性别、C++成绩;声明一个教师类,包含教工号、姓名、职称;声明一个领导类,包含领导的工号、姓名和职位;实例化每个类的对象一个,声明一个show函数为这三个类的友元函数,分别显示其详细信息。
时间: 2024-02-03 21:04:27 浏览: 103
好的,以下是一个学生类、教师类、领导类的声明和实现,以及一个show函数作为这三个类的友元函数:
```cpp
#include <iostream>
#include <string>
class Teacher; // 声明教师类,以便在学生类中使用
class Leader // 领导类
{
public:
Leader(std::string id, std::string name, std::string position);
friend void show(Leader l, Student s, Teacher t); // 声明友元函数
private:
std::string m_id; // 工号
std::string m_name; // 姓名
std::string m_position; // 职位
};
class Student // 学生类
{
public:
Student(std::string id, std::string name, std::string gender, double score);
friend void show(Leader l, Student s, Teacher t); // 声明友元函数
private:
std::string m_id; // 学号
std::string m_name; // 姓名
std::string m_gender; // 性别
double m_score; // C++成绩
};
class Teacher // 教师类
{
public:
Teacher(std::string id, std::string name, std::string title);
friend void show(Leader l, Student s, Teacher t); // 声明友元函数
private:
std::string m_id; // 工号
std::string m_name; // 姓名
std::string m_title; // 职称
};
Leader::Leader(std::string id, std::string name, std::string position)
{
m_id = id;
m_name = name;
m_position = position;
}
Student::Student(std::string id, std::string name, std::string gender, double score)
{
m_id = id;
m_name = name;
m_gender = gender;
m_score = score;
}
Teacher::Teacher(std::string id, std::string name, std::string title)
{
m_id = id;
m_name = name;
m_title = title;
}
void show(Leader l, Student s, Teacher t)
{
std::cout << "领导:" << std::endl;
std::cout << "工号:" << l.m_id << std::endl;
std::cout << "姓名:" << l.m_name << std::endl;
std::cout << "职位:" << l.m_position << std::endl;
std::cout << "学生:" << std::endl;
std::cout << "学号:" << s.m_id << std::endl;
std::cout << "姓名:" << s.m_name << std::endl;
std::cout << "性别:" << s.m_gender << std::endl;
std::cout << "C++成绩:" << s.m_score << std::endl;
std::cout << "教师:" << std::endl;
std::cout << "工号:" << t.m_id << std::endl;
std::cout << "姓名:" << t.m_name << std::endl;
std::cout << "职称:" << t.m_title << std::endl;
}
int main()
{
// 实例化一个领导对象
Leader leader("001", "张三", "校长");
// 实例化一个学生对象
Student student("20191001", "李四", "男", 90.5);
// 实例化一个教师对象
Teacher teacher("1001", "王五", "副教授");
// 调用友元函数 show,显示三个对象的详细信息
show(leader, student, teacher);
return 0;
}
```
运行结果:
```
领导:
工号:001
姓名:张三
职位:校长
学生:
学号:20191001
姓名:李四
性别:男
C++成绩:90.5
教师:
工号:1001
姓名:王五
职称:副教授
```
阅读全文