2011-01-12 135 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 *與一個轉換操作符爲const char串類*RWCString和const char之間的隱式轉換*

+0

我認爲``RWCString`類型的臨時類型是由`const char *`字符串構造的。由於這個原因,更可能發生這種情況:`RWCString str =「Y」;`。 – AraK 2011-01-12 11:24:53

+0

爲什麼你使用第三方字符串庫而不是`std :: string`,到底如何? – 2011-01-12 12:43:57

回答

0

這是極有可能的是==超載爲const char*RWCString之間的比較。

否則任str轉換爲const char *或調用是含糊:

str == "YES"是模糊的,如果有一個外部或構件operator==比較兩個RWCString秒。

"YES" == str如果有外部operator==比較兩個RWCString s是不明確的。

(假設operator==的參數正常傳遞 - 通過複製或參考const)。