C++友元

友元的目的
让一个类或函数去访问另一个类中的私有成员
关键字
friend
分类:
全局函数做友元
类友元
成员函数做友元

1.全局函数做友元

class Bulid {
	friend void run();//设置友元
public:
	Bulid();

	string setingroom;
private:
	string bedroom;

};
//类外实现成员函数
Bulid::Bulid(){
	this->setingroom = "客厅";
	this->bedroom = "卧室";
}

void run() {
	Bulid bulid;
	cout << "好基友正在访问" << bulid.setingroom << endl;
	cout << "好基友正在访问" << bulid.bedroom << endl;
}
int main() {
	run();

}

可以看到run函数做友元后可以访问私有变量 bedroom

2.类友元

class gayfriend {
private:
	Bulid  * bulid;//Bulid类的指针 
public :
	gayfriend();//构造函数

public:
	void vist();

};

class Bulid {

	friend class gayfriend;//设置类友元
public:
	Bulid();//构造函数

	string setingroom;
private:
	string bedroom;

};
//设置类外成员函数
Bulid::Bulid(){
	this->setingroom = "客厅";
	this->bedroom = "卧室";
}

gayfriend::gayfriend() {
	this->bulid = new  Bulid;//此处不释放内存了,重点不在这
}

void gayfriend::vist() {
	cout << "好基友拜访了" << bulid->setingroom<<endl;//输出正常
	cout << "好基友拜访了" << bulid->bedroom<<endl;//已经设置友元,输出正常
}


void run() {
	gayfriend gay;
	gay.vist();
}

int main(){
	run();
}

3.成员函数做友元

class Bulid;
class gayfriend {
private:
	Bulid* bulid;
public:
	gayfriend();

	void vist();

};
class Bulid {
	friend void gayfriend::vist();//设置成员函数为友元 注意gayfriend类的代码需在Bulid之前,不然编译器不会识别

public:
	Bulid();//构造函数

	string setingroom;
private:
	string bedroom;

};
//类外实现成员函数
Bulid::Bulid(){
	this->setingroom = "客厅";
	this->bedroom = "卧室";
}

gayfriend::gayfriend() {
	bulid = new Bulid;
}

void gayfriend::vist() {
	cout << "基友访问了" << bulid->setingroom << endl;//访问客厅
	cout << "基友访问了" << bulid->bedroom << endl;//访问私有卧室,成功
}

void run() {
	gayfriend gay;
	gay.vist();
}

int main(){
	run();
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值