C의 변환 연산자 이해
다음 코드 조각을 고려하세요.
C에서 변환 연산자는 다음과 같습니다. 유형 변환에서 중요한 역할을 합니다. 그렇다면 어떻게 작동하나요?
1. 인수 전달 중 변환:
복사 초기화 규칙에 따라 인수 전달 중에 변환 연산자가 고려됩니다. 변환이 참조인지 여부에 관계없이 소스 유형을 호환 가능한 유형으로 변환합니다.
2. 참조로 변환:
변환된 유형이 lvalue인 경우 조건 연산자에서 참조로의 변환이 허용됩니다. 또한 참조를 직접 바인딩하는 경우 참조로의 변환이 필요할 수도 있습니다.
3. 함수 포인터로 변환:
함수 호출 시 함수 포인터 또는 참조로의 사용자 정의 변환이 사용됩니다.
4. 클래스가 아닌 유형으로의 변환:
부울로의 변환과 같은 암시적 변환은 사용자 정의 변환 함수를 사용할 수 있습니다.
5. 변환 함수 템플릿:
템플릿을 사용하여 유형을 모든 포인터 유형(멤버 포인터 제외)으로 변환하는 변환 함수를 생성할 수 있습니다.
왜 컴파일러는 그렇지 않습니까? Type을 대체하시겠습니까?
주어진 예에서 smartref의 변환 연산자가 포인터를 반환하기 때문에 컴파일러는 Type을 대체하지 않습니다. 내부 데이터 멤버에. think()를 호출하려고 할 때 컴파일러는 p가 사람 개체에 대한 참조가 아니라 사람 개체에 대한 포인터라고 추론합니다. 따라서 명시적인 유형 대체를 수행하지 않습니다.
위 내용은 컴파일러가 변환 연산자의 유형을 대체하지 않는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!