1.2.06_C++友元関数

1281 ワード

C++クラス&オブジェクト
クラスのメタ関数は、クラスの外部に定義されていますが、クラスにアクセスするすべてのプライベートメンバーと保護メンバーです.
メタ関数のプロトタイプはクラスの定義に現れたことがあるが、メタ関数はメンバー関数ではない.
  • 友元は、友元関数と呼ばれる関数であってもよい.
  • 友元は、友元クラスと呼ばれるクラスであってもよく、この場合、クラス全体およびそのすべてのメンバーが友元である.

  • 関数をクラスの友元として宣言する場合は、次のように、クラス定義で関数のプロトタイプを使用する前にキーワードfriendを使用する必要があります.
    class Box
    {
       double width;
    public:
       double length;
       friend void printWidth( Box box );
       void setWidth( double wid );
    };
    

    クラスClassTwoのすべてのメンバー関数をクラスClassOneの友元として宣言するには、クラスClassOneの定義に次の宣言を配置する必要があります.
    friend class ClassTwo;
    

    次の手順を参照してください.
    #include 
     
    using namespace std;
     
    class Box
    {
       double width;
    public:
       friend void printWidth( Box box );
       void setWidth( double wid );
    };
    
    //       
    void Box::setWidth( double wid )
    {
        width = wid;
    }
    
    //    :printWidth()           
    void printWidth( Box box )
    {
       /*    printWidth()   Box    ,               */
       cout << "Width of box : " << box.width <

    上記のコードがコンパイルおよび実行されると、次の結果が得られます.
    Width of box : 10
    

    コードリンク:https://github.com/karst87/cpp/tree/master/learning/com.runoob