C++ フレンド関数の詳細説明: クラス間アクセスにフレンド関数を使用するには?

王林
リリース: 2024-04-29 18:51:01
オリジナル
1134 人が閲覧しました

C のフレンド関数を使用すると、非メンバー関数がクラスのプライベート メンバーと保護されたメンバーにアクセスできるようになります。これは、クラス間操作、ADT、単体テストの実装に非常に役立ちます。 フレンド関数の宣言: out を宣言するには、friend キーワードを使用します。 -of-class 関数。フレンド関数を使用する: メンバー関数であるかのように、クラスのプライベート メンバーに直接アクセスします。実践例: フレンド機能を使用して、年齢属性を公開せずにプライベートな年齢情報を取得します。

C++ 友元函数详解:如何使用友元函数进行跨类访问?

C のフレンド関数の詳細な説明: クラス間アクセスを実現する

C プログラミングでは、フレンド関数は、クラス外の関数を使用できるようにする強力なメカニズムです。クラスは、クラスのプライベートおよび保護されたメンバーにアクセスします。これは、次のような状況で非常に役立ちます。

  • 特定のクラス属性に対する非メンバー関数の操作を実装する。
  • クラス全体に抽象データ型 (ADT) を実装します。
  • 単体テスト フレームワークでは、フレンド関数を使用してアクセス制限を回避し、プライベート メソッドをテストします。

フレンド関数の宣言

class MyClass {
public:
    // ...
private:
    // ...
    friend void print_my_class(const MyClass&); // 声明友元函数
};
ログイン後にコピー

上記のコードは、print_my_classMyClass のフレンド関数として宣言します。これは、print_my_class 関数が MyClass のプライベート メンバーと保護されたメンバーにアクセスできることを意味します。

フレンド関数の使用

フレンド関数を使用するには、フレンド関数でクラスのプライベート メンバーに直接アクセスするだけです:

void print_my_class(const MyClass& obj) {
    std::cout << "Private member: " << obj.private_member << std::endl;
    std::cout << "Protected member: " << obj.protected_member << std::endl;
}
ログイン後にコピー

実用的なケース

個人を表す person クラスがあり、プライベート age メンバーがあるとします。 person オブジェクトの年齢を取得するために、フレンド関数 get_age を作成します。

class Person {
public:
    // ...
private:
    int age;
    friend int get_age(const Person&); // 声明友元函数
};

int get_age(const Person& person) {
    return person.age;
}
ログイン後にコピー

main 関数で、 #Person オブジェクトを作成し、フレンド関数 get_age を使用してそのプライベート メンバーにアクセスします:

int main() {
    Person person(25);
    std::cout << "Age: " << get_age(person) << std::endl;
    return 0;
}
ログイン後にコピー

出力:

Age: 25
ログイン後にコピー

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

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!