ホームページ  >  記事  >  バックエンド開発  >  C++関数のフレンド機構を詳しく解説

C++関数のフレンド機構を詳しく解説

WBOY
WBOYオリジナル
2024-04-18 11:15:021109ブラウズ

C フレンド メカニズムでは、次の目的を達成するために、非メンバー関数またはクラスが他のクラスのプライベート メンバーまたは保護されたメンバーにアクセスできるようになります。 非メンバー関数によるプライベート メンバーへのアクセスを許可する メンバー関数による他のクラスのプライベート メンバーへのアクセスを許可する クラスを許可する別のクラスにアクセスするためのメンバー関数 クラスのプライベート メンバー

C++ 函数的友元机制详解

# C 関数のフレンド メカニズムの詳細な説明

フレンド メカニズム関数またはクラスが、クラスまたは関数のプライベートまたは保護されたメンバーの他の特性にアクセスできるようにするメソッドです。 C では、フレンド メカニズムは次の目的を達成できます。

  • 非メンバー関数がクラスのプライベート メンバーにアクセスできるようにする
  • クラスのメンバー関数がクラスのプライベート メンバーにアクセスできるようにする別のクラス

構文

  • グローバル関数フレンド宣言: #

    friend 返回值类型 函数名(参数列表);

  • クラスのフレンド宣言:

    friend class 类名;

  • クラスのメンバー関数のフレンド宣言:

    friend 返回值类型 类名::成员函数名(参数列表);

実践例:

問題: プライベート メンバー x を持つ Point クラスを設計するy 、すべてのプライベート メンバーを出力する print() 関数があります。ここで、Point クラスのプライベート メンバーにアクセスし、それらを出力できる追加の printInfo() 関数が必要になります。

実装:

// Point 类
class Point {
private:
    int x;
    int y;

public:
    // 友元函数,可以访问 Point 类的私有成员
    friend void printInfo(Point& point);

    // Point 类的成员函数
    void print() {
        std::cout << "x: " << x << ", y: " << y << std::endl;
    }
};

// 全局友元函数,可以访问 Point 类的私有成员
void printInfo(Point& point) {
    std::cout << "x: " << point.x << ", y: " << point.y << std::endl;
}

int main() {
    Point point{10, 20};
    point.print();  // 输出:x: 10, y: 20
    printInfo(point);  // 输出:x: 10, y: 20
    return 0;
}

以上がC++関数のフレンド機構を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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