2013-04-22 4 views
0

나는 오퍼레이터의 복귀가 무엇인지 알고 싶다 !! C++에서 _bstr_t 유형 (문자열)연산자는 무엇입니까 !! 문자열에 C++

exemple :

if (!!mybstr) 
{ 
doSomething() 
} else { 
doNothing() 
} 

나는 그것을 부울 반환 가정,하지만 어떻게 작동합니까?

감사합니다.

+2

연산자 '!!'가 없습니다. 그것은 실제로 연속되는 2 개의'!'연산자입니다. –

답변

12

_bstr_t::operator! 캡슐화 된 BSTR 문자열이 NULL 인 경우 true을 반환합니다. 따라서 캡슐화 된 BSTR 문자열이 NULL이 아닌 경우 !!mybstrtrue이됩니다.

4

!!은 운영자가 아닙니다. ! 연산자의 두 응용 프로그램입니다. 일반 bool 값의 경우 순수 효과는 작업 없음입니다. 암시 적 변환이 bool 인 유형의 경우 변환을 강제로 bool으로 사용하는 경우가 있습니다. operator!이 오버로드 된 유형의 경우 operator!의 의미에 따라 모든 작업을 수행 할 수 있습니다.

1

당신이 MSDN documentation에서 보면 :

확인을 캡슐화 된 BSTR이 NULL 문자열 인 경우.

그래서 두 번하면 NOT NULL이 먼저 있는지 확인한 다음 NOT이 맞으면 if (bstr)을 확인하는 것입니다.

1
if (!!mybstr) = if (!(!mybstr)) = if (mybstr) 
+0

그런 식으로 수학적으로 보일 수도 있지만 "운영자!" 두 번 적용된 것이 항상 "연산자 bool"과 같지는 않지만 일부 C++ 클래스는 하나만 제공하고 다른 클래스는 제공하지 않습니다. – MerickOWA