类与友元函数

来源:互联网 发布:linux 设置ip地址 编辑:程序博客网 时间:2024/05/19 12:26
采用类的隐藏后实现了数据的隐藏和封装,类的数据成员一般定为私有成员,成员函数一般定义为共有的,以此提供类与外界的通信借口,有时需要定义一些函数,这些函数不是类的一部分(注意友原函数不是类的一部分),但又需要频繁的访问类的数据成员,这时可以将这些函数定义成友元函数。除了友元函数,还有友元类,友元的作用是提高了函数的运行效率(即类型检查和安全性检查都需要时间开销),但他破坏了类的封装性和隐藏性,使得非成员函数可以访问类的私有成员。

若在类中定义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
原创粉丝点击