0
RWCString str = "Y";
str.append("ES");
if("YES" == str)
    cout << "YES == str" << endl;
if(str == "YES")
    cout << "str == YES" << endl;

どちらの場合も暗黙の変換はどのように行われるのでしょうか? 安心して使えるのはどっち?RWCString は、const char* を受け取るコンストラクターと const char* への変換演算子を持つ文字列クラスです。

4

1 に答える 1

0

==の比較のために がオーバーロードされている可能性が非常に高いです。const char*RWCString

それ以外の場合strは、次のように変換されるconst char *か、呼び出しがあいまいになります。

str == "YES"operator==2 つの を比較する外部またはメンバーがある場合、 はあいまいですRWCString

"YES" == stroperator==2 つの を比較する外部がある場合、 はあいまいですRWCString

(への引数が正常に渡されると仮定しoperator==ます -- コピーまたはconst参照のいずれかを介して)。

于 2011-01-12T11:19:13.300 に答える