나는 오퍼레이터의 복귀가 무엇인지 알고 싶다 !! C++에서 _bstr_t
유형 (문자열)연산자는 무엇입니까 !! 문자열에 C++
exemple :
if (!!mybstr)
{
doSomething()
} else {
doNothing()
}
나는 그것을 부울 반환 가정,하지만 어떻게 작동합니까?
감사합니다.
나는 오퍼레이터의 복귀가 무엇인지 알고 싶다 !! C++에서 _bstr_t
유형 (문자열)연산자는 무엇입니까 !! 문자열에 C++
exemple :
if (!!mybstr)
{
doSomething()
} else {
doNothing()
}
나는 그것을 부울 반환 가정,하지만 어떻게 작동합니까?
감사합니다.
_bstr_t::operator!
캡슐화 된 BSTR
문자열이 NULL
인 경우 true
을 반환합니다. 따라서 캡슐화 된 BSTR
문자열이 NULL
이 아닌 경우 !!mybstr
은 true
이됩니다.
!!
은 운영자가 아닙니다. !
연산자의 두 응용 프로그램입니다. 일반 bool
값의 경우 순수 효과는 작업 없음입니다. 암시 적 변환이 bool
인 유형의 경우 변환을 강제로 bool
으로 사용하는 경우가 있습니다. operator!
이 오버로드 된 유형의 경우 operator!
의 의미에 따라 모든 작업을 수행 할 수 있습니다.
당신이 MSDN documentation에서 보면 :
확인을 캡슐화 된 BSTR이 NULL 문자열 인 경우.
그래서 두 번하면 NOT NULL이 먼저 있는지 확인한 다음 NOT이 맞으면 if (bstr)
을 확인하는 것입니다.
if (!!mybstr) = if (!(!mybstr)) = if (mybstr)
그런 식으로 수학적으로 보일 수도 있지만 "운영자!" 두 번 적용된 것이 항상 "연산자 bool"과 같지는 않지만 일부 C++ 클래스는 하나만 제공하고 다른 클래스는 제공하지 않습니다. – MerickOWA
연산자 '!!'가 없습니다. 그것은 실제로 연속되는 2 개의'!'연산자입니다. –