c++友元函数简析

本文探讨了C++中的友元函数在实现类间数据共享时的角色,以提高效率。友元函数允许外部类访问另一个类的私有和保护成员,而普通函数则不具备this指针,并且友元关系不被继承。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.友元函数的基本介绍
(1)友元函数是可以直接访问类的私有成员的非成员函数(只有类的成员函数才能访问类中的私有成员)。
友元函数是定义在类外的普通函数,不属于任何类,但需要在类的定义中加以声明,声明时只需在友元函数的名称前加上关键字friend 。
定义格式:friend+返回类型+函数名+参数列表
例如:friend void Show(inta);
(2)在类外实现时不用类的作用域标识符::来指示哪一个类,只有成员函数才用::作用域符号。
(3)调用时而友元函数和普通函数的调用方法是一样的,不需要对象和指针来调用。
(4)举例:
 #include
using namespacestd;
class Count{
friend void setx(Count&,int);
public:
Count():x(0)
{
     //empty body
}
void print()
{
cout<<x<<endl;
}
private:
intx; 
};
void setx(Count &c,intval)
{
c.x=val;
}
 intmain()
 {
  Countcounter;
 cout<<"输出 x 的值  ";
counter.print();
 
 setx(counter,8);
 cout<<"输出 x的值  ";
counter.print(); 
 }
2.为什么要使用友元函数?

在实现类之间数据共享时,减少系统开销,提高效率。如果类A中的函数要访问类B中的成员(例如:智能指针类的实现),那么类A中该函数要是类B的友元函数。具体来说:为了

使其他类的成员函数直接访问该类的私有变量。即:允许外面的类或函数去访问类的私有变量和保护变量,从而使两个类共享同一函数。

3.友元函数和普通函数的区别

(1) 成员函数有this指针,而友元函数没有this指针。

 (2)友元关系不能被继承。





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值