1.2.06_C++友元関数
1281 ワード
C++クラス&オブジェクト
クラスのメタ関数は、クラスの外部に定義されていますが、クラスにアクセスするすべてのプライベートメンバーと保護メンバーです.
メタ関数のプロトタイプはクラスの定義に現れたことがあるが、メタ関数はメンバー関数ではない.友元は、友元関数と呼ばれる関数であってもよい. 友元は、友元クラスと呼ばれるクラスであってもよく、この場合、クラス全体およびそのすべてのメンバーが友元である.
関数をクラスの友元として宣言する場合は、次のように、クラス定義で関数のプロトタイプを使用する前にキーワードfriendを使用する必要があります.
クラスClassTwoのすべてのメンバー関数をクラスClassOneの友元として宣言するには、クラスClassOneの定義に次の宣言を配置する必要があります.
次の手順を参照してください.
上記のコードがコンパイルおよび実行されると、次の結果が得られます.
コードリンク:https://github.com/karst87/cpp/tree/master/learning/com.runoob
クラスのメタ関数は、クラスの外部に定義されていますが、クラスにアクセスするすべてのプライベートメンバーと保護メンバーです.
メタ関数のプロトタイプはクラスの定義に現れたことがあるが、メタ関数はメンバー関数ではない.
関数をクラスの友元として宣言する場合は、次のように、クラス定義で関数のプロトタイプを使用する前にキーワード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