2011-01-12 38 views
0
RWCString str = "Y"; 
str.append("ES"); 
if("YES" == str) 
    cout << "YES == str" << endl; 
if(str == "YES") 
    cout << "str == YES" << endl; 

いずれの場合も暗黙の変換はどのように行われますか?どちらを安全に使用できますか? RWCStringのは、==const char*RWCString間の比較のために過負荷になっていることを非常に可能性があるRWCStringとconst charの間の暗黙的な変換*

+0

一時的な 'RWCString'型は、' const char * '文字列から構成されていると思います。これはこれにより起こりそうです: 'RWCString str =" Y ";'。 – AraK

+0

「std :: string」の代わりにサードパーティの文字列ライブラリを使用しているのはなぜですか? –

+0

このライブラリを使用する既存のコードで作業しています。私はこの行に出くわし、これがいつも動くかどうか疑問に思いました。 – balki

答えて

0

*のconstのcharへのconstのchar *と変換演算子を取るコンストラクタを持つ文字列クラスです。

そうでない場合のいずれかstrconst char *に変換されるか、または呼び出しが曖昧である2つのRWCString Sを比較外部または部材operator==がある場合

str == "YES"はあいまいです。

"YES" == strは外部operator==の2つを比較するとあいまいです。RWCStringです。

operator==への引数は、コピー、またはconstの参照を介して正常に渡されるものとします)。

+0

@ashot: 'const char *'(質問の最後の文)への変換があるとの質問があるので、答えは「はい」です。 – lijie

+0

@liijieあなたは確かですか?RWCStringは暗黙的にconst char *に変換できますか? Becouseができなくてconst char *が暗黙的にRWCSTRingに変換できるのであれば、私はあいまいではないでしょうか? – UmmaGumma

+0

@liijie OK、私のせい:) – UmmaGumma

関連する問題