全局函数做友元
类做友元
成员函数做友元
#include<iostream>
#include<string>
using namespace std;
//------------------------------------全局函数做友元
class Building
{
//全局函数goodGay可以访问
friend void goodGay(Building *building);
public:
Building()
{
m_SittingRoom = "客厅";
m_BedRoom = "卧室";
}
string m_SittingRoom;
private:
string m_BedRoom;
};
void goodGay(Building *building)
{
cout<<"好基友的全局函数 正在访问:"<<building->m_SittingRoom<<endl;
cout<<"好基友的全局函数 正在访问:"<<building->m_BedRoom<<endl;
}
//----------------------------------------类做友元
class Building2;
class GoodGay
{
public:
GoodGay();
void vsist();//参观函数用于访问Building中的属性
private:
Building2 * building2;
};
class Building2
{
friend class GoodGay;//GoodGay可以访问本类中的私有成员
public:
Building2();
string m_SittingRoom;
private:
string m_BedRoom;
};
//类外写成员函数
Building2::Building2()
{
m_SittingRoom = "客厅";
m_BedRoom = "卧室";
}
GoodGay::GoodGay()
{
building2 = new Building2;//初始化指向堆区的内存
};
void GoodGay::vsist()
{
cout<<"好基友正在访问:"<<building2->m_SittingRoom<<endl;
cout<<"好基友正在访问:"<<building2->m_BedRoom<<endl;
}
void text()
{
GoodGay gg;
gg.vsist();
}
//-------------------------------成员函数做友元
class Building;
class GoodGay
{
public:
GoodGay();
void visit();//让visit可以访问Building中的私有成员
void visit2();//不可以访问私有成员
Building * building;
};
class Building
{
friend void GoodGay::visit();//GoodGay可以访问本来下的私有成员
public:
Building();
string m_SittingRoom;
private:
string m_BedRoom;
};
Building::Building()
{
m_SittingRoom = "客厅";
m_BedRoom = "卧室";
}
GoodGay::GoodGay()
{
building = new Building;
}
void GoodGay::visit()
{
cout<<"visit 函数正在访问:"<<building->m_SittingRoom<<endl;
cout<<"visit 函数正在访问:"<<building->m_BedRoom<<endl;
}
void GoodGay::visit2()
{
cout<<"visit2 函数正在访问:"<<building->m_SittingRoom<<endl;
}