// ( r12.C ) // フレンド関数の例 // #include // 通常の関数 printx でクラス A の private ま class A { // たはprotected 宣言された変数 v を使いたい。 int v ; public: // public 宣言された変数をアクセスするのには、 A( int i=0 ) { v = i ; } ; // friend 宣言はいらない。どこからでもアクセ friend void print1( A& ) ; // スできる。friend 宣言は、クラス定義のどこ friend void print2( A ) ; // に置いても構わない friend void print3( const A& ) ; void set( int i ) { v = i ; } } ; void print1( A& p ) // ただの関数 { cout << "class A = " << p.v << "\n" ; } void print2( A p ) { p.v = 20 ; cout << "class A = " << p.v << "\n" ; } void print3( const A& p ) // const 宣言されているため、ル−チンの中では { // 値を変更できない。const A p でも同じこと。 // p.v = 30 ; cout << "class A = " << p.v << "\n" ; } main() { A m ; m.set( 10 ) ; print1( m ) ; print2( m ) ; A i ; print1( i ) ; // 0 : おまけ A j(30) ; print1( j ) ; // 30 } /* [結果] class A = 10 class A = 20 */