目录
一、全局函数作为友元函数
友元,使非成员函数可以访问类内私有属性。
- 语法:friend+函数声明(函数类型+函数名称)
//家建筑
class Building
{
//有一个全局函数 作为本类的友元函数,可以继续访问到私有内容
friend void goodGay(Building& building);
public:
Building()
{
this->m_BedRoom = "卧室";
}
private:
//卧室
string m_BedRoom;
};
二、类作为友元类
1.语法:friend+类声明(class+类名称)
2.
class goodGay
{
public:
goodGay();
void visit();
private:
Building* building;
};
//家建筑
class Building
{
//告诉编译器 goodGay类是本类的好朋友,可以访问到里面私有成员
friend class goodGay;
public:
Building();
private:
//卧室
string m_BedRoom;
};
三、成员函数作为友元函数
1.写法:friend+成员函数声明(函数类型+类名称+::+成员函数名称)
2.
class goodGay
{
public:
goodGay();
void visit();//visit 可以访问到Building中私有属性
void visit2();//visit2 不可以访问到Building中私有属性
private:
Building* building;
};
//家建筑
class Building
{
friend void goodGay::visit();
public:
Building();
public:
//客厅
string m_SittingRoom;
private:
//卧室
string m_BedRoom;
};