有一个学生类 Stu,包括学生姓名、成绩,一个教师类 Tea,包括教师姓 名、职称。这两个类共用一个友元函数,输出信息:学生姓名、成绩、教师姓名、 职称
时间: 2023-07-04 19:11:25 浏览: 95
好的,这是一个很基础的面向对象编程问题,我来为你解答。
首先,我们需要定义两个类:`Stu`和`Tea`。在这两个类中,我们需要声明一个友元函数`printInfo`,用于输出学生和教师的信息。具体代码如下:
```c++
#include <iostream>
#include <string>
using namespace std;
class Tea; // 声明Tea类
class Stu {
public:
Stu(string s, int g):name(s), grade(g) {}
friend void printInfo(Stu& stu, Tea& tea); // 声明友元函数
private:
string name; // 学生姓名
int grade; // 学生成绩
};
class Tea {
public:
Tea(string s, string t):name(s), title(t) {}
friend void printInfo(Stu& stu, Tea& tea); // 声明友元函数
private:
string name; // 教师姓名
string title; // 教师职称
};
void printInfo(Stu& stu, Tea& tea) { // 定义友元函数
cout << "学生姓名:" << stu.name << endl;
cout << "学生成绩:" << stu.grade << endl;
cout << "教师姓名:" << tea.name << endl;
cout << "教师职称:" << tea.title << endl;
}
int main() {
Stu stu("小明", 90);
Tea tea("张老师", "教授");
printInfo(stu, tea);
return 0;
}
```
在上面的代码中,我们定义了`Stu`和`Tea`两个类,并声明了一个友元函数`printInfo`。在`main()`函数中,我们创建了一个`Stu`对象和一个`Tea`对象,并调用`printInfo()`函数输出学生和教师的信息。
运行上面的代码,输出结果为:
```
学生姓名:小明
学生成绩:90
教师姓名:张老师
教师职称:教授
```
这样,我们就完成了这个问题的解答。
阅读全文