ホームページ  >  記事  >  バックエンド開発  >  C++ フレンド関数はプライベート メンバーにどのようにアクセスしますか?

C++ フレンド関数はプライベート メンバーにどのようにアクセスしますか?

WBOY
WBOYオリジナル
2024-04-15 17:27:02629ブラウズ

C のフレンド関数がプライベート メンバーにアクセスするには、2 つの方法があります。クラス内でフレンド関数を宣言します。クラスをフレンド クラスとして宣言すると、クラス内のすべてのメンバー関数が別のクラスのプライベート メンバーにアクセスできるようになります。

C++ 友元函数如何访问私有成员?

C Friend 関数のプライベート メンバーへのアクセス方法

フレンド関数はクラスの外部で定義されていますが、アクセスできますプライベートの関数クラスのメンバー。プライベート メンバーへのフレンド関数のアクセスを実装するには 2 つの方法があります:

1. フレンド関数の宣言

クラス内でフレンド関数を宣言します。構文は次のとおりです。

class ClassName {
public:
  // 类成员...

  // 声明友元函数
  friend void friend_function();
};

このようにして、宣言されたフレンド関数はクラスのプライベート メンバーにアクセスできます。

2. フレンド クラスの宣言

クラスをフレンド クラスとして宣言すると、クラス内のすべてのメンバー関数が別のクラスのプライベート メンバーにアクセスできます。構文は次のとおりです。

class ClassName1 {
public:
  // 类成员...

  // 声明友元类
  friend class ClassName2;
};

ClassName2 で宣言されたすべてのメンバー関数は、ClassName1 のプライベート メンバーにアクセスできます。

実践的なケース

次の C コードを考えてみましょう:

class Person {
private:
  int age;
  string name;

public:
  // 友元函数
  friend void print_person_info(const Person& person);

  // 访问私有成员的友元函数
  void print_info() const {
    cout << "Name: " << name << endl;
    cout << "Age: " << age << endl;
  }
};

// 友元函数外部分类的定义
void print_person_info(const Person& person) {
  cout << "Name: " << person.name << endl;
  cout << "Age: " << person.age << endl;
}

int main() {
  Person person;
  person.name = "John";
  person.age = 30;

  person.print_info();
  print_person_info(person);

  return 0;
}

この例では、print_person_info 関数はフレンド関数です。 、 Person クラスのプライベート メンバーにアクセスできます。 Person クラスでは、print_info 関数も、フレンド関数宣言を使用してプライベート メンバーにアクセスします。

上記のコードを実行すると出力:

Name: John
Age: 30
Name: John
Age: 30

以上がC++ フレンド関数はプライベート メンバーにどのようにアクセスしますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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