c++ 友元

来源:互联网 发布:python http上传文件 编辑:程序博客网 时间:2024/05/21 11:10

友元可以理解为是类的“朋友”,它可以访问类的保护和私有成员,即一个类的友元对类的访问不受访问权限的控制。友元的作用在于提高程序的运行效率,但是,它破坏了类的封装性和隐藏性。友元可以是一个函数,该函数被称为友元函数;友元也可以是一个类,该类被称为友元类。 

 

一、友元函数

友元函数是在类外定义的一个函数,不是类的成员函数。这个函数可以是普通的C++函数,或者是其他类的成员函数。即普通友元函数和友元成员函数。友元函数是定义在类外部,但需要在类体内进行说明,为了与该类的成员函数加以区别,在说明时前面加以关键字friend。友元函数可以访问类中的保护和私有成员。

注:友元函数只需声明时加friend关键字,函数实现时不用加关键字;

 

友元函数的声明:


普通友元函数的声明:

friend  类型标识符  友元函数名(参数列表);

如:friend void fun2(int x);

友元成员函数(即将其它类的成员函数声明为该类的友元函数)的声明:

friend  类型标识符  其他类名 ::  友元函数名(参数列表);

如:friend void CStore::f2(int y); //在以引用其它类定义时,需要在本类定义前对其进行声明,如 class CStore;

 

二、友元类

一个类可以作另一个类的友元称为友元类。当一个类作为另一个类的时,意味着这个类的所有成员函数都是另一个类的友元函数,可以访问另一个类的私有成员。

声明友元类的语法形式:

      friend  class 类名;

例如:将A类声明为B类的友元类

Class  B

 {

……

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

……

  }; 

 

注:

1)友元关系不具有交换性,即是单向的;

2)友元关系不具有传递的。


0 0
原创粉丝点击