のように書きます。 早速例題を見てみましょう。friend class A;
上の例題で、CatClassクラスの定義中に DogClassクラスがフレンドクラスであると宣言されています。#include <iostream.h> #include <string.h> class CatClass { friend class DogClass; int asi; char nya[32]; public: CatClass(); void show(); }; class DogClass { int legs; char wan[32]; public: DogClass(); void koe(CatClass cat); void koe(); }; void CatClass::show(void) { cout << "asi = " << asi << endl; cout << "koe = " << nya << endl; return; } CatClass::CatClass(void) { asi = 4; strcpy(nya, "ニャー、ニャー"); } DogClass::DogClass(void) { legs = 4; strcpy(wan, "ワンワン"); } void DogClass::koe(CatClass cat) { cout << "鳴き声= " << cat.nya << endl; return; } void DogClass::koe(void) { cout << "鳴き声= " << wan << endl; return; } int main(void) { DogClass Pochi; CatClass Tama; cout << "[Tama の特徴]" << endl; Tama.show(); cout << "[Pochiの鳴き声]" << endl; Pochi.koe(); cout << "[Tamaの鳴き声]" << endl; Pochi.koe(Tama); return 0; }
DogClassクラスのなかで、koe関数がオーバーロードされている ことに注意して下さい。引数がなければ自分のクラスのメンバである wanを表示します。引数を取るときは他人の?クラスのデータメンバ nyaを表示します。nyaはプライベートですから他からはアクセスできません。 しかし、DogClassはCatClassのフレンドクラスですからこのような ことが可能です。しかし、逆はできません。
Update Jan/24/1997 By Y.Kumei