#include<iostream>
using namespace std;
#include <string>
class Building;//由于我在goodGay中使用了Building 但是Building在goodGay之后定义的 所以我们在这之前声明一下
class goodGay {
public:
goodGay();
void visit();//只让visit函数作为Building的好朋友,可以访问Building中private
void visit2();
private:
Building* building;//创建一个声明 表面有一个building是Building类型的 但是没定义
};
class Building {
//与上面呼应,告诉编译器 goodGay类中的visit成员函数是Building的友元函数 可以访问private
friend void goodGay::visit();
public:
Building();
string m_SittingRoom;
private:
string m_BedRoom;
};
Building::Building() {//类外声明
this->m_BedRoom = "卧室";//这里的this是传入的那个building
this->m_SittingRoom = "客厅";
}
goodGay::goodGay() {
building = new Building;//上面的创建的一个声明,这里定义了一个Building 传给上面声明的那个building
}
void goodGay::visit() {
cout << "好基友正在访问" << building->m_BedRoom << endl;
cout << "好基友正在访问" << building->m_SittingRoom << endl;
}
void goodGay::visit2() {
// cout << "好基友正在访问" << building->m_BedRoom << endl;这里由于不是friend友元 所以不能访问private
cout << "好基友正在访问" << building->m_SittingRoom << endl;
}
void test01() {
goodGay gg;
gg.visit();
gg.visit2();
}
int main() {
test01();
system("pause");
return 0;
}
c++ 友元2
最新推荐文章于 2024-08-03 18:36:56 发布