类与友元函数

采用类的隐藏后实现了数据的隐藏和封装,类的数据成员一般定为私有成员,成员函数一般定义为共有的,以此提供类与外界的通信借口,有时需要定义一些函数,这些函数不是类的一部分(注意友原函数不是类的一部分),但又需要频繁的访问类的数据成员,这时可以将这些函数定义成友元函数。除了友元函数,还有友元类,友元的作用是提高了函数的运行效率(即类型检查和安全性检查都需要时间开销),但他破坏了类的封装性和隐藏性,使得非成员函数可以访问类的私有成员。

若在类中定义read()函数例如:
class Sales_data
{
public:
     friend  istream& read(istream &is,Sales_data &M);      
       string isbn();      
     int add (Sales_data trans);       
       void print ();
private:
      string bookNo;
      double price;
     int units_sold;
};
则在调用中就必须用类的对象来引用这个函数,否则编译报错说函数未声明的使用,解决这个问题,就用到了friend关键字。将函数定义在外部,然后在类内部使用friend声明为友元函数,则可以正常使用。

友元函数的弊在于破坏了代码的封装性耦合性。
利处:普通函数直接访问类的成员,提高了运行效率,方便重载操作符的使用。



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值