2011-03-05 3 views

답변

0

"사용자 정의 변환을 사용하면 생성자 또는 변환 함수를 사용하여 객체 변환을 지정할 수 있습니다. 사용자 정의 변환은 초기화 프로그램, 함수 인수, 함수 반환 값, 표현식 피연산자, 표현식 변환을위한 표준 변환 외에도 암시 적으로 사용됩니다 반복문, 선택 문 및 명시 적 유형 변환을 제어합니다. "

http://publib.boulder.ibm.com/infocenter/comphelp/v8v101/index.jsp?topic=/com.ibm.xlcpp8a.doc/language/ref/cplr383.htm

나는 사용자 정의 연산자 (기술적으로) C++에서 사용할 수 있는지 모르겠지만, 연산자는 오버로드 할 수 있습니다. C++에서

http://www.cs.caltech.edu/courses/cs11/material/cpp/donnie/cpp-ops.html

+0

는 C'에는 사용자 정의 연산자는 없다 ++ '. – Mahesh

+0

@Mahesh : 사용자 정의 형식 변환 연산자를 제외합니다. –

1

는 overloadable 할 수 있습니다 사용자 정의 사업자의 개념이 없습니다. 단지 약간의 예외와 함께, 연산자를 기존 (. , *::, :.?, sizeof 연산자)는 오버로드 할 수 있습니다.

+0

아니요, 사용자 정의 변환이 아닙니다. 이것은 컴파일러가 정의한 업 캐스팅입니다. 사용자 정의 변환은 포인터가 아니라 클래스 유형의 값에서 작동해야합니다 (원본 또는 대상 중 하나가 포인터가 될 수 있지만 둘 다가 아닙니다). –

+0

@Ben Voigt : 컴파일러가 사용자 정의 유형에서 작동하므로 사용자 정의 유형 변환으로 간주 할 수 없습니다. – Mahesh

+0

@Mahesh : 귀하의 예는 (원시) 포인터 유형에서 다른 (원시) 포인터 유형으로 변환하고있었습니다. (원시) 포인터는 사용자 정의 유형이 아닙니다. 사용자 정의 유형의 변환은 자동으로 사용자 정의 변환이 아니며 변환을 수행하기 위해 사용자 제공 코드를 실행하는 경우에만 사용자 정의 변환이라고합니다. –

4

사용자 정의 변환은 다음 중 하나입니다

  • 소스 유형의 단일 매개 변수를 사용하여 호출 할 수있는 대상 유형의 생성자는 (가 기본값이있는 경우 더 인수가 존재할 수)

또는

  • 이름의 소스 유형의 비 정적 멤버 함수 operator DESTTYPE()
  • ,174,

두 번째 옵션은 전통적인 연산자에 과부하가 걸린 경우와 마찬가지로 operator 키워드를 사용합니다.

(참고 :.이 모든 공식적으로 C++ 표준의 섹션 [class.conv]에서 설명)

관련 문제