友元

友元的作用是提高了程序的运行效率(即减少了类型和安全性检查及调用的时间开

销),但它破坏了类的封装性和隐藏性,使得非成员函数可以访问类的私有成员。

友元可以是一个函数,该函数被称为友元函数;友元也可以是一个类,该类被称为

友元类。

友元函数终究不是成员函数,成员中有隐参 this 指针,可以直接访问成员,而友元

中则没有,必须得通过对象来访问。

友元函数语法格式:

class A

{

friend void globalfunction(A &,...)public:

....

}

一个类的成员函数作友员,在声明为另一个类的友员时,要将原类的作用域加上,

语法格式如下:

class A

{

friend

void One::globalfunction(A&,...);public:

...

}

友元类:

class A

{

    friend class B;

    public:

    private:

...

};

 友元关系不能被继承。

友元关系是单向的,不具有交换性。若类 B 是类 A 的友元,类 A 不一定是类 B

的友元,要看在类中是否有相应的声明。

友元关系不具有传递性。若类 B 是类 A 的友元,类 C 是 B 的友元,类 C 不一定

是类 A 的友元,同样要看类中是否有相应的声明。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • friend类: 如果class A想让class B访问它的成员,只需要在class A中将class B声明称...
    teanee阅读 3,325评论 0 0
  • 静态成员 静态成员的定义或声明要加个关键static。静态成员可以通过双冒号来使用即<类名>::<静态成员名>。 ...
    黄巴巴阅读 3,741评论 0 2
  • 类的友元函数是定义在类外部,但有权访问类的所有私有(private)成员和保护(protected)成员。尽管友元...
    凯恩_Kane阅读 4,813评论 0 0
  • 引入 当某一类或函数需要访问或使用另一类的私有函数或变量时,引入友元。例如:你的银行卡号是私有的,别人不能访问,但...
    ZayAlan阅读 3,085评论 0 0
  • 友元函数 : 友元函数是可以直接访问类的私有成员的非成员函数。它是定义在类外的普通函数,它不属于任何类,但...
    mingzhi618阅读 2,817评论 0 0

友情链接更多精彩内容