형변환 없는 명시적 연산자 bool
부울로의 명시적 변환이 있는 클래스를 설계할 때 명시적 형변환 없이 부울로 사용할 수 있는 클래스가 어디인지 궁금할 수 있습니다. .
부울로의 상황별 변환
C 표준은 값이 "상황에 따라 부울로 변환"될 수 있는 특정 시나리오를 정의합니다. 이러한 상황은 다음 네 가지 주요 범주에 속합니다.
1. 명령문:
- if (t) /* 명령문 */;
- for (; t;) /* 명령문 */;
- while ( t) /* 명령문 */;
- do { /* 차단 */ } while (t);
2. 표현식:
- !t
- t && t2
- t || t2
- t ? "참" : "거짓"
3. 컴파일 시간 테스트:
- static_assert(t);
- noException(t)
- explicit(t)
- if constexpr (t)
4. 알고리즘 및 개념:
- NullablePointer T
- std::remove_if(...)
- std::sort(...)
상수 및 비상수 연산자 관련 주의사항
상수 및 비상수 변환 연산자를 조합하면 혼란을 초래할 수 있다는 점에 유의할 가치가 있습니다. 자세한 내용은 아래 관련 질문을 참조하세요.
- [컨텍스트 변환에서 명시적인 bool() 변환이 발생하지 않는 이유는 무엇입니까?](https://stackoverflow.com/questions/5580156/why- dont-explicit-bool-conversion-happen-in-contextual-conversion)
- [왜 명시적 연산자 bool이 예상대로 적용되지 않습니까?](https://stackoverflow.com/questions/26578447/why -명시적인 연산자-부울이 예상대로 효과가 없음)
위 내용은 C에서 형변환 없이 명시적인 `연산자 bool`이 작동하는 경우는 언제입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!