用friend关键字声明函数或类
作用:
让一个函数或者类可以访问另一个类中的私有成员
#include <iostream>
class PersonB;
class PersonA {
friend int GetMoney(PersonA* pA);//全局函数声明为友元函数
friend class PersonB;//类声明为友元类
public:
PersonA() {
m_money = 100;
}
private:
int m_money;
};
class PersonB {
public:
PersonB() {
m_money = 200;
pA = new PersonA();
}
~PersonB() {
if (pA) {
delete pA;
pA = nullptr;
}
}
int GetPersonAMoney()
{
return pA->m_money;//友元类可以访问类私有成员
}
private:
int m_money;
PersonA* pA;
};
int GetMoney(PersonA* pA)
{
return pA->m_money;//全局友元函数可以访问类私有成员
}
int main()
{
PersonA pA;
PersonB pB;
std::cout << "通过全局友元函数获取pA的money:" << GetMoney(&pA) << std::endl;
std::cout << "通过友元类获取pA的money:" << pB.GetPersonAMoney() << std::endl;
system("pause");
return 0;
}