저자는 명시적 유형 변환 연산자와 C++ Primer 책의 차이점에 대해 많이 고민하고 더 의미 있는 예제를 제공하기 위해 노력했습니다.
형변환 연산자
다음 예를 보세요.
이때 복소수 클래스의 프로토타입은 double형의 형변환 연산자를 정의합니다. 이를 사용하면 다음과 같이 사용할 수 있습니다.
출력 결과는 다음과 같습니다.
complex는 출력 연산자를 지원하지 않으므로 컴파일러는 나중에 출력하기 위해 c1을 double 유형으로 변환하려고 시도합니다. 지금까지는 너무 좋았습니다.
정말로 double로 변환하고 싶나요?
아래 코드를 보세요.
수학적 관점에서 보면 2.23606이 출력되어야 합니다. 하지만 실제로 이 코드는 컴파일조차 할 수 없습니다. 그 이유는 컴파일러에 이 코드에 대한 두 가지 옵션이 있기 때문입니다. 하나는 c1을 double로 변환한 다음 1을 추가하는 것이고, 다른 하나는 1을 복소수(1+0i)로 변환한 다음 복소수 덧셈을 수행하는 것입니다.
프로그래머들의 아이디어가 필요합니다.
명시적 유형 변환 연산자
모호성을 제거하기 위한 한 가지 방법은 명시적을 사용하여 암시적 이중 유형 변환을 금지하는 것입니다. 코드는 다음과 같습니다.
암시적 유형 변환을 수행할 수 없으므로 다음 코드는 컴파일 오류가 발생합니다.
이중 출력으로의 변환이 올바르지 않거나 올바르지 않기 때문에 큰 문제는 아닙니다. 아니, 얘기하기 쉽지요. 코드는 출력 연산자 오버로딩을 통해 복수형 출력 기능을 제공했습니다.
출력은 다음과 같습니다:
이것이 우리가 정말로 원하는 것입니다!
추가하기
원한다면 다음과 같이 코딩할 수도 있습니다.
이 기사가 도움이 되었나요? 더 많은 사람들과 공유해주세요.
관련 권장사항:
위 내용은 C++11 공통 구문 - 명시적 유형 변환 연산자의 특정 사용법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!