21xrx.com
2024-12-23 02:43:05 Monday
登录
文章检索 我的文章 写文章
理解和应用C++中的friend关键字
2023-06-23 09:50:24 深夜i     --     --
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关键字能够让程序变得更加灵活,但是同时也会降低程序的可读性和维护性,因此应该在实际编程中谨慎使用。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复
    相似文章