友元的目的是让一个函数或者类,访问另一个类中的私有成员。
一、全局函数做友元
#include <string>
#include "iostream"
using namespace std;
class Home
{
friend void goodGay(Home *home);
public:
Home();
string m_SittingRoom;
private:
string m_BedRoom;
};
Home::Home()
{
m_SittingRoom = "客厅" ;
m_BedRoom = "卧室";
}
void goodGay(Home *home)
{
cout << "好基友正在访问:" << home->m_SittingRoom <<endl ;
cout << "好基友正在访问:" << home->m_BedRoom << endl ;
}
void test01()
{
Home home;
goodGay(&home);
}
int main()
{
test01();
system ("pause");
return 0 ;
}
二、类做友元
#include <string>
#include "iostream"
using namespace std;
class Home
{
friend class GoodGay;
public:
Home();
string m_SittingRoom;
private:
string m_BedRoom;
};
class GoodGay
{
public:
GoodGay();
Home *home;
void visit();
};
Home::Home()
{
m_SittingRoom = "客厅" ;
m_BedRoom = "卧室";
}
GoodGay::GoodGay()
{
home = new Home;
}
void GoodGay::visit()
{
cout << "GG正在访问" << home -> m_SittingRoom << endl;
cout << "GG正在访问" << home -> m_BedRoom << endl;
}
void test01()
{
GoodGay gg;
gg.visit();
}
int main()
{
test01();
system ("pause");
return 0 ;
}
三、成员函数做友元
#include <string>
#include "iostream"
using namespace std;
class Home;
class GoodGay
{
public:
GoodGay();
Home *home;
void visit1();
void visit2();
};
class Home
{
friend void GoodGay::visit1();
public:
Home();
string m_SittingRoom;
private:
string m_BedRoom;
};
Home::Home()
{
m_SittingRoom = "客厅" ;
m_BedRoom = "卧室";
}
GoodGay::GoodGay()
{
home = new Home;
}
void GoodGay::visit1()
{
cout << "1正在访问" << home ->m_BedRoom << endl;
}
void GoodGay::visit2()
{
cout << "2正在访问" << home ->m_SittingRoom << endl;
}
void test01()
{
GoodGay gg;
gg.visit1();
gg.visit2();
}
int main()
{
test01();
system ("pause");
return 0 ;
}