C++友元関数
シーン:通常の関数ではクラスの保護タイプのデータにアクセスできません.アクセスするにはpublic(共有)と宣言する必要があります.これにより、クラスのデータにアクセスおよび操作できる外部関数が発生します.C++ではfriend修飾子を使用して、設定した関数で保護タイプのデータにアクセスおよび操作できます.クラスメンバーをすべてpublicに設定しないで、データメンバーの安全を最大限に保護します.しかし,欠点は友元関数がクラスのパッケージ特性を破壊することであるが,それでもC++に必要な知識点として理解する必要がある.
例を見てみましょう.
まとめ:
例を見てみましょう.
#include <stdio.h>
#include <iostream>
using namespace std;
class C;
class B;
class A
{
public :
A (int value)
{
this->value=value;
cout<<"A:"<<value<<endl;
}
void showNumber(B &b);
friend void CountValue(A &a ,B &b);
private:
int value;
};
class B
{
public :
B (int value)
{
this->value=value;
cout<<"B:"<<value<<endl;
}
friend void A::showNumber(B &b);
friend void CountValue(A &a ,B &b);
friend class C;
private:
int value;
};
class C
{
public:
C(){};
inline void setValue(B &b,int value)
{
b.value=value;
cout<<"C:"<<value<<endl;
}
};
void A::showNumber(B &b)
{
cout<<"B value:"<<b.value<<endl;
}
void CountValue(A &a ,B &b) //void A::CountValue(A &a ,B &b)-->
{
std::cout<<"A + B cout:"<<a.value+b.value<<endl;
}
int main()
{
A a(10);
B b(20);
C c;
CountValue(a ,b);//A + B
a.showNumber(b);// B value
c.setValue(b,88);// 88 B value
a.showNumber(b);// B value
system("pause");
return 0;
}
実行結果:まとめ:
: , friend ,
, 。
eg: CountValue AB 。
eg: A showNumber B
eg: C B