c++友元函数

友元函数是可以直接访问类的私有成员的非成员函数。 它是定义在类外的普通函数,它不属于任何类,但需要在类的定义中加以声明,声明时只需在友元的名称前加上关键字friend。
优点

  • 普通函数可以访问某个类中的私有或保护成员。提高了程序的效率
    缺点:
  • 破坏了类的封装性和数据的透明性。
class Box
{
   double width;
public:
   double length;
   friend void printWidth( Box box );
   void setWidth( double wid );
};

printWidth的实现:
由于printWidth() 不是任何类的成员函数,所以实现的时候不需要加上作用域运算符,但是由于是友元函数,其可以访问该类的静态成员

void printWidth( Box box )
{
   cout << "Width of box : " << box.width <<endl;
}

声明某个类的所有成员函数均为友元直接在类定义的时候加入
friend class ClassTwo;

友元函数的约束:
1.友元函数没有this指针,如果要访问对象的非静态成员,需要对象做参数

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

相关阅读更多精彩内容

  • 友元函数介绍 为什么要使用友元函数 运算符重载的某些场合需要使用友元。(略) 两个类要共享数据:允许外面的类或函数...
    DeepWeaver阅读 1,118评论 0 0
  • C++ 类 & 对象 类的友元函数是定义在类外部,但有权访问类的所有私有(private)成员和保护(protec...
    资深小夏阅读 163评论 0 0
  • 类的友元函数是定义在类外部,但有权访问类的所有私有(private)成员和保护(protected)成员。尽管友元...
    YZBSXD阅读 256评论 0 0
  • C++类和对象 C++ 在 C 语言的基础上增加了面向对象编程,C++ 支持面向对象程序设计。类是 C++ 的核心...
    863cda997e42阅读 788评论 0 4
  • 沟通的定义百度是这样说的:是人与人之间、人与群体之间思想与感情的传递和反馈的过程,以求思想达成一致和感情的通畅。 ...
    铭陆星花阅读 221评论 0 1

友情链接更多精彩内容