c++中友元関数の理解と使用.
5291 ワード
c++を勉強しているうちに、友元関数と友元類については、まだ理解しにくいような気がしますが、心を落ち着かせて、理解して、私をいくつかの点に置く必要があります.まず,友元関数について述べる.
(1)友元関数:
友元関数宣言の一般的な形式を使用するには、次の手順に従います.
友元関数を使用する際の注意点:クラスではキーワードfriendを使用して友元関数を修飾しますが、この関数はクラスのメンバー関数ではありません.宣言はクラスのプライベート部分に置くことも共有部分に置くこともできます.メタ関数の定義はクラス体外で実現され,クラス限定を加える必要はない. クラスのメンバー関数は、別のクラスのメタ関数であってもよく、1つの関数は、複数のクラスのメタ関数であってもよい. ユーティリティー関数は、クラス内のプライベート・メンバーおよびその他のデータにアクセスできますが、アクセスはデータ・メンバーを直接使用することはできません.オブジェクトを参照する必要があります. 友元関数は呼び出しで一般関数と同様に、オブジェクトを参照する必要はありません.
例えば、上記の1、3、4の要点の使用をここで説明し、理解する.
ポイント2の使用について、コードの例を示します.
(1)友元関数:
1)C++ , ( ) ;
2) , , private protected 。
友元関数宣言の一般的な形式を使用するには、次の手順に従います.
friend < > < > (< >);
友元関数を使用する際の注意点:
例えば、上記の1、3、4の要点の使用をここで説明し、理解する.
#include
#include
using namespace std;
class persion{
public:
persion(char *pn);
// ;
friend void setweigth(persion &p,int h);// , , 3 4;
void disp(); //
private:
char name[20];
int weigth,age;
};
persion::persion(char *pn) //
{
strcpy(name,pn);
weigth=0;
}
void persion::disp()
{
cout<"--"<// : (perion::setweigth) , disp() , , , , 。
void setweigth(persion &pn,int w)
{
strcpy(pn.name,pn);//
pn.weigth=w; //
}
void main()
{
persion p("zhansan");
// setweigth(), 。
setweigth(p,60);
p.disp(); // 。
}
ポイント2の使用について、コードの例を示します.
#include
#include
using namespace std;
class wheel;
class car{
public:
car(char *pn);
void run(wheel &w); // , wheel
private:
char name[20];
};
car::car(char *pn)
{
strcpy(name,pn);
}
class wheel{
public:
wheel(int s);
friend void car::run(wheel &w); // car 。
private:
int speed;
};
wheel::wheel(int s)
{
speed=s;
}
int main(int argc, char const *argv[])
{
wheel w(60);
car c("New car");
c.run(w);
return 0;
}
void car::run(wheel &w) //car
{
cout<<"the car is running"<cout<<"name: "<" speed :"<