1
friend ostream &operator<<(ostream &os, const CSnmpMaintenanceSwitch &sw);
4

4 に答える 4

1

つまり、最初のパラメーターとして ostream & を、2 番目のパラメーターとして const CSnmpMaintenanceSwitch & を受け取るオペレーター << (確かにグローバル名前空間または現在のクラスの名前空間) が存在し、このオペレーターがあなたのプライベート メンバーにアクセスできることを意味します。現在のクラス (これは確かに CSnmpMaintenanceSwitch です)

于 2013-06-24T06:45:56.963 に答える
0

文字通り?これは、左側に<<an があり、右側に a がある独立した演算子の宣言です。式は参照を生成します。ostreamCSnmpMaintenanceSwitchostream

意味的に?ストリーム挿入演算子です。どのように言うことができるか知っていますstd::cout << someString;か?まあ、それはどこかに、という宣言があるからostream& operator<<(ostream& os, const string &str);です。あなたが尋ねている行は、ほぼ確実にCSnmpMaintenanceSwitchクラスで見つかり、そのオペレーターにそれらのオブジェクトの1つを出力するために必要なアクセスを与えます. だから今、あなたもstd::cout << mySnmpMaintenanceSwitch;同じように言うことができます。

于 2013-06-24T06:47:06.867 に答える
0

この行は、インスタンスへの参照と のインスタンスへの定数参照のoperator<<2 つのパラメータを取る を宣言します。のインスタンスに関する情報を次のような出力ストリームに書き込むことができますstd::ostreamCSnmpMaintenanceSwitchCSnmpMaintenanceSwitch

operator<< ( std::cout , CSnmpMaintenanceSwitchInstance );

また

std::cout << CSnmpMaintenanceSwitchInstance;

Operator は、friendのプライベートおよび保護されたメンバーにアクセスできるように宣言されていますCSnmpMaintenanceSwitch

のデフォルトの性質により、出力ストリームを変更する必要があるため(一部のデータが書き込まれる)、最初のパラメータは非定数参照として宣言されますoeprator<<

operator<<2 番目のパラメーターは、変更してはならないため (既定の性質により) 、定数参照として宣言されます。

于 2013-06-24T06:47:32.640 に答える
0

そのまま宣言されている理由friendは、オーバーロードされた演算子でいくつかのプライベート変数に直接アクセスして使用したい場合があるためです。

CSnmpMaintenanceSwitch オブジェクトを として与えるためconstant reference、プライベート データを変更しないことが隔離されます。

于 2013-06-24T06:54:56.910 に答える