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

암시 적 변환은 두 경우 모두 어떻게 발생합니까? 어느 것이 안전합니까? RWCString CONST이 숯불에 CONST 숯 * 및 변환 연산자 복용 생성자가 스트링 클래스 *RWCString과 const char 간의 암시 적 변환 *

+0

'RWCString' 타입의 임시는'const char *'문자열로 구성되어 있다고 생각합니다. 이것 때문에 일어날 가능성이 더 높습니다 :'RWCString str = "Y";'. – AraK

+0

왜'std :: string' 대신 써드 파티 문자열 라이브러리를 사용하고 있습니까? –

+0

임 :이 라이브러리를 사용하는 기존 코드를 작업 중입니다. 나는이 선을 가로 질러 왔고 이것이 언제나 효과가 있을지 궁금해했다. – balki

답변

0

그것은 ==const char*RWCString 간의 비교를 오버로드하는 것은 매우 쉽다.

그렇지 않으면 하나 strconst char *로 전환하거나 통화가 모호 : 외부 또는 멤버 operator==RWCString의 비교가있는 경우

str == "YES"이 모호합니다.

"YES" == str은 외부가 operator==이고 두 개가 RWCString 인 경우 모호합니다.

(operator==에 대한 인수가 복사 또는 const 참조를 통해 정상적으로 전달된다고 가정).

+0

@ashot : 'const char *'(질문의 마지막 문장) 로의 변환이 있으므로, 대답은 '예'라고 대답합니다. – lijie

+0

@liijie RWCString을 암시 적으로 const char *로 변환 할 수 있습니까? Becouse 수 없다면 const char *가 암시 적으로 RWCSTRing으로 변환 될 수 있습니다. 모호하지는 않습니다. – UmmaGumma

+0

@liijie OK, 내 잘못 : – UmmaGumma