2010-05-26 4 views
12

배열, 함수, 포인터, 참조, 클래스, 노동 조합, 열거 및 포인터 복합 유형 있습니다.열거 형이 복합 유형으로 간주되는 이유는 무엇입니까? 회원

화합물 종류에 대한 이해는 다른 유형 (들)에 기초한다. 예를 들어 T[n], T*T&은 모두 T을 기반으로합니다. 그런 다음 다른 유형 (들)은 기반으로하는 열거 형입니까?

또는 복합 유형에 대한 이해가 잘못된 경우

, 그것은 복합 형 만드는 형에 대해 정확히 무엇인가? 화합물은 단순히 의 동의어와 사용자 정의의 동의어입니까?

C에서
+0

같은 예제 here보기 대신 "복합 타입"이라는 용어는 "파생 형은"대신에 이용되고, C에 열거 된 유형을 유도하지 않는다. 이것은 내가 C++의 "복합 유형"이 유형을 새로운 유형으로 복합화 할뿐만 아니라 새로운 유형으로 값을 변경한다는 것을 의미한다고 생각하게합니다. 주어진 열거 형에 대한 설명은 "열거 형 (named) 상수 값 집합을 구성하는 열거 형 (enumerations)"이라는 의혹을 강화시킵니다. –

+0

@Johannes enums in C 및 enums in C++은 완전히 다른 동물입니다. 예를 들어, C에서 C++이 아닌 열거 형 변수에 정수 값을 할당 할 수 있습니다. – fredoverflow

+0

두 언어 모두에서 정확하지만 그럼에도 불구하고 그들은 자신의 유형을 정의합니다. 하지만 나는이 두 용어로 너무 많이 해석하고있는 것 같아. "복합 유형"은 사실 복합 유형의 작용을 나타내는 것으로 보이며 AndreyT와 같은 기본 유형은 열거 형이 복합 유형 인 것으로 나타났습니다. :) –

답변

12

는 ++ 열거 유형은 스칼라 종류가 있습니다, 그러나 동시에 그들은 몇 가지 근본적인 정수 계열 형식의 상단에 내장되어 있기 때문에 화합물 종류가 있습니다. 배열이나 포인터의 경우 "기본"유형을 명시 적으로 지정하지만 열거 형의 경우 특정 기본 정수 유형이 구현에 의해 암시 적으로 자동 선택됩니다. 기본적으로 enum 유형이 본질적으로 복합체가 될 수있는 자격을 박탈하지 않는 기본 통합 유형을 수동으로 제어 할 수는 없습니다.

어떤 컴파일러 (뿐만 아니라 미래의 C++ 표준 C + +0) 사용자가 실제로 복합 형이라고 더 분명하게 주어진 열거 형에 대한 기본 정수 유형을 지정할 수는. C에서

enum class Color : char { red, blue }; 
관련 문제