二、实验内容 1定义一个Girl类和一个Boy类,这两个类中都有表示姓名、年龄的私有数据成员,都要定义构造西数、析构西数、输出成员变量信息的公有成员函数。 1)在Girl 类中定义成员函数 VisitBoy (Boy&),并声明为Boy 类的友元成员,从而访问 Boy 类的私有成员。 (2)删除 Girl 类的成员函数 VisitBoy (Boy &),定义一个普通西数 visitBoyGirl (Boy&,Girl &),作为以上两个类的友元,通过调用该函数输出 Boy 和Girl 的信息。 定义友元类的主西数可参考如下: int main ( { Girl girl ("ZHOU Yuxing", 16) ; Boy boy ("Chen Qi", 15); girl. Print (); boy. Print (); girl. VisitBoy (boy); return 0; ] 定义友元函数的主西数可参考如下: int main () { Girl girl ("ZHOU Yuxing", 16) : Boy boy ("Chen Qi", 15); girl. Print; boy. Print 0 ; VisitBoyGirl (boy, girl); return 0;
时间: 2024-01-04 08:03:10 浏览: 104
以下是Girl类和Boy类的定义,包括构造函数、析构函数以及输出成员变量信息的公有成员函数:
```cpp
#include <iostream>
#include <string>
using namespace std;
class Boy; // 提前声明Boy类
class Girl {
private:
string name;
int age;
public:
Girl(string n, int a) : name(n), age(a) {}
~Girl() {}
void Print() {
cout << "Name: " << name << endl;
cout << "Age: " << age << endl;
}
friend void visitBoyGirl(Boy&, Girl&);
void VisitBoy(Boy& b); // 声明为Boy类的友元成员
};
class Boy {
private:
string name;
int age;
public:
Boy(string n, int a) : name(n), age(a) {}
~Boy() {}
void Print() {
cout << "Name: " << name << endl;
cout << "Age: " << age << endl;
}
friend void visitBoyGirl(Boy&, Girl&);
friend void Girl::VisitBoy(Boy& b); // 声明为Girl类的友元成员
};
void Girl::VisitBoy(Boy& b) {
cout << "Boy's name: " << b.name << endl;
cout << "Boy's age: " << b.age << endl;
}
void visitBoyGirl(Boy& b, Girl& g) {
cout << "Boy's name: " << b.name << endl;
cout << "Boy's age: " << b.age << endl;
cout << "Girl's name: " << g.name << endl;
cout << "Girl's age: " << g.age << endl;
}
```
在上述代码中,Girl类中定义了一个名为VisitBoy的成员函数,并将其声明为Boy类的友元成员,从而可以访问Boy类的私有成员。另外,Boy类中也定义了一个名为VisitBoy的成员函数,并将其声明为Girl类的友元成员,但是由于本题中要求删除Girl类的VisitBoy函数,因此这里不做展开。
同时,定义了一个普通函数visitBoyGirl作为以上两个类的友元函数,通过调用该函数输出Boy和Girl的信息。
在主函数中,可以按照以下方式使用以上定义的类和函数:
```cpp
int main() {
Girl girl("ZHOU Yuxing", 16);
Boy boy("Chen Qi", 15);
girl.Print();
boy.Print();
girl.VisitBoy(boy);
visitBoyGirl(boy, girl);
return 0;
}
```
以上代码创建了一个Girl对象girl和一个Boy对象boy,并分别调用它们的Print函数输出姓名和年龄。接着,girl对象调用VisitBoy函数访问boy对象的私有成员,并调用visitBoyGirl函数输出两个对象的信息。
阅读全文