RHZ'S BLOG | 个人分享

  • 首页
  • 笔记
  • 小日常
  • 音乐
  • 读书
  • 软件分享
YOLO
  1. 首页
  2. 笔记
  3. C/C++
  4. 正文

Friend 关键词|C++

2022年9月12日 107点热度 0人点赞 0条评论

友元函数

通常,类的 private 成员不能从该类以外的地方访问。

但是,声明一个非成员函数作为类的朋友允许它访问类的私有成员。这是通过在类中包含这个外部函数的声明来实现的,并且在关键字 friend 之前。在下面的例子中,someFunc() 不是类的成员函数,它是 MyClass 的一个好友,可以访问它的私有成员。

class MyClass {
 public:
  MyClass() {
   regVar = 0;
  }
 private:
  int regVar;
    
  friend void someFunc(MyClass &obj);
};

请注意,在将对象传递给函数时,我们需要使用&运算符通过引用来传递它。

Friend 关键词|C++插图
friend

函数 someFunc() 被定义为类之外的常规函数​​. 它将 MyClass 类型的对象作为参数,并能够访问该对象的私有数据成员。

class MyClass {
 public:
  MyClass() {
   regVar = 0;
  }
 private:
  int regVar;
    
 friend void someFunc(MyClass &obj);
};

void someFunc(MyClass &obj) {
  obj.regVar = 42;
  cout << obj.regVar;
}

someFunc() 函数更改对象的私有成员并打印其值。

为了使其成员可访问,类必须在其定义中声明该函数为朋友。

你能把一个函数做为一个类的朋友,除非类“放弃”它对那个函数的友谊。

Friend 关键词|C++插图1
class Myclass{
public:
friend void foo();
};

现在我们可以在 main 中创建一个对象,并调用 someFunc() 函数:

int main() {
  MyClass obj;
  someFunc(obj);
}

//输出 42

someFunc() 有权限修改对象的私有成员并打印它的值。

友元函数的典型用例是在访问两者的私有成员的两个不同类之间进行的操作。

你可以在任何数量的类中声明一个函数的朋友。

与友元函数类似,您可以定义一个朋友类,该类可以访问另一个类的私有成员。

Friend 关键词|C++插图2
本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可
标签: 暂无
最后更新:2022年9月12日

RHZ

即使单枪匹马,我亦勇敢无畏

点赞
< 上一篇
下一篇 >

文章评论

取消回复
归档
  • 2023年2月
  • 2022年12月
  • 2022年11月
  • 2022年10月
  • 2022年9月
  • 2022年8月
  • 2022年7月
  • 2022年6月
  • 2022年5月
  • 2022年4月
  • 2022年3月
  • 2022年2月
  • 2021年12月
  • 2021年11月
  • 2021年10月
  • 2021年8月
  • 2021年7月

COPYRIGHT © 2022 RHZ的博客. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

渝ICP备2022008933号-1