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

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

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
リリース: 2024-04-15 17:27:02
オリジナル
919 人が閲覧しました

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

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

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

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

1. フレンド関数の宣言

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

1

2

3

4

5

6

7

class ClassName {

public:

  // 类成员...

 

  // 声明友元函数

  friend void friend_function();

};

ログイン後にコピー

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

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

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

1

2

3

4

5

6

7

class ClassName1 {

public:

  // 类成员...

 

  // 声明友元类

  friend class ClassName2;

};

ログイン後にコピー

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

実践的なケース

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

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 関数も、フレンド関数宣言を使用してプライベート メンバーにアクセスします。

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

1

2

3

4

Name: John

Age: 30

Name: John

Age: 30

ログイン後にコピー

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

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート