2010-01-10 2 views
15

클래스 A의 경우 정수 변환 연산자는 다음과 같습니다.변환 연산자는 어떻게 값을 반환합니까?

operator int() //Here we don't specify any return type 
{ 
    return intValue; 
} 

반환 값 형식이 지정되지 않은 것으로 보이는 경우 위 함수가 값을 반환 할 수있는 방법은 무엇입니까? 그것은 "아무것도"를 반환하지 않는 것처럼 보이지만, 나는 그것이 void이 아니라는 것을 안다.

반환 유형을 지정하지 않은 경우 어떻게 의미가 있습니까?

+0

형식 서명의 중요성을 너무 높이는 것이 생각의 장벽이라고 생각합니다. 타입 시그니처는 보통 * 변환 타입의 경우 리턴 타입이 무엇인지를 알려주는 * 리턴 타입을 알려주는 * 것이다. 리턴 타입은 구문 적으로 함수의 "이름"과 비슷한 것으로 주어진다. –

답변

20

반환 유형 operator T()은 항상 T입니다. C++의 특별한 경우입니다.

이 같은 이름 (double foo()와 예를 들어, int foo() 충돌) 공존 할 수 없습니다 리턴 타입 만 다른 표준 함수 프로토 타입 구문을 T foo()이 때문에 기능을 사용하지 않습니다. 이 구문을 사용하면 1 변환 연산자 오버로드 만 정의 할 수 있으며 이는 바람직하지 않습니다.

+0

반환 유형 오버로드를 언급하는 +1 –

6

의 반환 값이 T 인 유형은 항상 T입니다.

3

변환 연산자의 이름은 해당 유형입니다. 그렇지 않은 경우 실제로 double을 반환하는 int 변환 연산자 (예 :)를 정의 할 수 있습니다. 다소 비슷한 사고 방식이 반환 유형이없는 생성자에도 적용됩니다.