// ( r14.C ) // 演算子のオ−バロ−ド:メンバ関数を使う場合 // #include #include class String { int len ; char* str ; public: // 変な値が入らないように初期化する String( char* p = "" ) { set(p) ; } void set( char* p ) { len = strlen( p ) ; str = new char[len+1] ; strcpy( str,p ) ; } void put() { cout << len << " : " << str << "\n" ; } int operator==( String& ) ; // String& でも String& t でもよい int operator!=( String& t ) ; } ; int String::operator==( String& t ) { if ( t.len != len ) return 0 ; else if ( strcmp(t.str,str)==0 ) return 1 ; return 0 ; } int String::operator!=( String& t ) // != だけど operator== と同じ機能 { if ( t.len != len ) return 0 ; else if ( strcmp(t.str,str)==0 ) return 1 ; return 0 ; } main() { String s1 ; s1.put() ; s1.set( "KATOU" ) ; s1.put() ; String s2( "YASUDA" ) ; s2.put() ; if ( s1 == s2 ) cout << "OK \n" ; else cout << "NG \n" ; if ( s1 != s2 ) cout << "OK \n" ; else cout << "NG \n" ; } /* [結果] 0 : 5 : KATOU 6 : YASUDA NG NG */