友元函数

如果类内的某些数据类型是private私有的,那么就无法从外部调用了

如何让其他类或者函数访问这些私有数据呢

这里就可以在类内加一条函数声明,

声明这些函数是友元 friend即可


class example {
private:
	int a, b, c;
public:
	example(int a,int b,int c):a(a),b(b),c(c){}

	friend  void printf(example& a);               //这里加一条友元声明即可
};

void  printf(example& a)
{
	cout << a.a << endl;
	return;
}

这里需要注意的是,这里只是声明外部有个函数可以调用类中的私有数据,类本身没有这个函数

如果想从类中调用,则需要在类中自己写一个成员函数

#include<iostream>
using namespace std;

class example {
private:
	int a, b, c;
public:
	example(int a,int b,int c):a(a),b(b),c(c){}

	friend  void printf(example& a);

	void  printf(example& a)
	{
		cout << a.b << endl;
		return;
	}
	
};

void  printf(example& a)
{
	cout << a.a << endl;
	return;
}

int main()
{
	example a(1, 2, 3);


	printf(a);       //外部函数
	a.printf(a);   //类中的函数
	return 0;
}
结果自然是:
1
2

还有就是友元类的概念

class   B 
{ 
    friend   class   A;             //声明A为B的友元类 
}; 

其实就是对于B来说A是友元的,所以A中的所有成员函数都可以调用B的数据,无论这个数据是否是私有还是公有

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值