类和对象 第四部分:友元

在程序里,有些私有属性,也想让类外特殊的一些函数或者类进行访问,就需要用到友元的技术

友元的目的就是让一个函数或者类,访问另一个类私有成员

友元的关键字为friend

一.友元的三种实现

(一)全局函数友元

正常来说,在类外无法访问到私有函数会报错

但是如果在类内的最上层添加全局函数友元,就直接可以实现访问私有函数

基本语法:friend 想要获得权限的函数的头,
就比如下面的
friend void goodGay(building *building);

效果图:

(二)类做友元

class Building;
class goodGay
{
public:

	goodGay();
	void visit();//参观函数,访问building中的属性

private:
	Building *building;
};

class Building
{
public:
	Building();

public:
	string m_SittingRoom; //客厅
private:
	string m_BedRoom;//卧室
};

//类外写成员函数需要写命名空间确保函数的调用
Building::Building()
{
	this->m_SittingRoom = "客厅";
	this->m_BedRoom = "卧室";
}

goodGay::goodGay()
{
	building = new Building;
}

void goodGay::visit()
{
	cout << "好基友正在访问" << building->m_SittingRoom << endl;
	//cout << "好基友正在访问" << building->m_BedRoom << endl;
}

void test01()
{
	goodGay gg;
	gg.visit();

}

int main(){

	test01();

	system("pause");
	return 0;
}

目前函数构造

但是我们去掉注释,访问私有成员变量m_bedroom便会报错

因此,我们在building声明goodGay为友元,就能够实现从类访问私有变量

(三)成员函数做友元

同样是上述代码,但我们不用类去整体访问,采用成员函数作为友元作为访问,也可以完成访问

由于此方法调用十分严格,顺序格式等不能出错,因此极其不推荐使用此方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值