21xrx.com
2025-04-27 10:09:03 Sunday
文章检索 我的文章 写文章
理解和应用C++中的friend关键字
2023-06-23 09:50:24 深夜i     10     0
C++ friend 理解 应用

在C++中,我们可以使用friend关键字来授权其它类或者函数访问该类的私有成员,这对于管理类的访问权限是十分有用的。

首先,让我们看一个简单的示例,了解friend关键字的基本用法:

class MyClass {
private:
  int num;
  void privateMethod() {}; // 私有方法
  // 友元函数声明
  friend void friendFunction(MyClass &obj);
};
void friendFunction(MyClass &obj) {
  obj.num = 10; // 可以访问MyClass的私有成员num
  obj.privateMethod(); // 也可以访问私有方法
}

在这个示例中,我们定义了一个名为MyClass的类,并声明了一个私有成员num和一个私有方法privateMethod。我们同时定义了friendFunction这个函数,并在类的声明中声明这个函数为MyClass的友元函数。友元函数可以访问该类的私有成员变量和方法,这意味着在friendFunction这个函数中,我们可以访问和修改MyClass中的num成员变量和调用privateMethod方法。

除了函数之外,我们还可以将其他类定义为MyClass的友元类,这样该类的所有成员函数都将能够访问MyClass的私有成员变量。下面是示例代码:

class MyClass {
private:
  int num;
  void privateMethod() {}; // 私有方法
  // 友元类声明
  friend class FriendClass;
};
class FriendClass {
public:
  void accessClassMyClass(MyClass &obj) {
    obj.num = 10; // 可以访问MyClass的私有成员num
    obj.privateMethod(); // 也可以访问MyClass的私有方法
  }
};

在这个示例中,我们将FriendClass定义为MyClass的友元类,并实现了accessClassMyClass方法。通过FriendClass的对象,我们可以访问和修改MyClass中的私有成员变量num和调用privateMethod方法。

总结而言,friend关键字是C++中非常强大的一个概念,能够让我们在类的访问权限上灵活控制。虽然使用friend关键字能够让程序变得更加灵活,但是同时也会降低程序的可读性和维护性,因此应该在实际编程中谨慎使用。

  
  

评论区

请求出错了