ホームページ >バックエンド開発 >C++ >C++のフレンド関数の詳細解説:フレンド関数のアクセス権を制限するには?

C++のフレンド関数の詳細解説:フレンド関数のアクセス権を制限するには?

WBOY
WBOYオリジナル
2024-04-29 09:09:021062ブラウズ

C のフレンド関数は、アクセス指定子または名前空間を通じてアクセス権を制限し、特定の関数または特定の名前空間内の関数のみがクラスのプライベート メンバーにアクセスできるようにすることができます。

C++ 友元函数详解:如何限制友元函数的访问权限?

#C フレンド機能の詳しい解説:フレンド機能のアクセス権を制限するには?

C では、フレンド関数は、外部関数がクラスのプライベート メンバーにアクセスできるようにする特別な関数です。これにより、あるクラスの外部のプライベート データや関数にアクセスできるようになり、特定の状況でより高い柔軟性が得られます。

フレンド関数のアクセス権を制限する

フレンド宣言を制限することで、フレンド関数のアクセス権を非公開メンバーに制限できます。これを行うには 2 つの方法があります:

方法 1: アクセス指定子を使用する

アクセス指定子 (public、protected、または private) の使用を制限できます。 フレンド関数のアクセス許可。構文は次のとおりです。

class MyClass {
  private:
    // 私有成员只能被友元函数访问
    friend void friendFunction();
};

方法 2: 名前空間を使用する

名前空間を使用して、フレンド関数の表示を制限することもできます。構文は次のとおりです。

namespace MyNamespace {
  class MyClass {
    private:
      // 私有成员由 MyNameSpace 命名空间内部所有友元函数访问
      friend class MyFriendClass;
  };
}

実用的なケース

次の 2 つのクラスがあるとします。

class Person {
  private:
    string name;
    int age;
};

class FriendClass {
  public:
    // 可以访问私有成员,因为它是一个友元类
    void printPersonDetails(Person person) {
      cout << person.name << ", " << person.age << endl;
    }
};

Here,

FriendClassperson クラスのフレンド クラスであるため、nameage などのプライベート メンバーにアクセスできます。

例を実行します

int main() {
  Person person{"John Doe", 30};
  FriendClass friendObj;  
  friendObj.printPersonDetails(person);
  return 0;
}

出力:

John Doe, 30

以上がC++のフレンド関数の詳細解説:フレンド関数のアクセス権を制限するには?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。