Share via


클래스 형식으로 형식 정의 사용

typedef 지정자를 클래스 형식에 사용하는 것은 typedef 선언에서 명명되지 않은 구조체를 선언하는 ANSI C의 방법 때문에 주로 지원됩니다. 예를 들어 많은 C 프로그래머는 다음을 사용합니다.

// typedef_with_class_types1.cpp
// compile with: /c
typedef struct {   // Declare an unnamed structure and give it the
                   // typedef name POINT.
   unsigned x;
   unsigned y;
} POINT;

이러한 선언의 장점은 다음과 같은 선언이 가능하다는 것입니다.

POINT ptOrigin;

위의 선언을 아래의 선언 대신 사용할 수 있습니다.

struct point_t ptOrigin;

C++에서는 typedef 이름과 실제 형식(class, struct, union 및 enum 키워드로 선언됨) 간의 차이가 더 분명합니다. typedef 문에서 이름이 없는 구조체를 선언하는 C의 방법이 여전히 작동하지만 이 방법은 C에서만큼 표기법상의 이점을 제공하지 않습니다.

// typedef_with_class_types2.cpp
// compile with: /c /W1
typedef struct {
   int POINT();
   unsigned x;
   unsigned y;
} POINT;

위의 예제에서는 명명되지 않은 클래스 typedef 구문을 사용하여 POINT라는 클래스를 선언합니다. POINT는 클래스 이름으로 간주되지만 다음과 같은 제한 사항이 이런 방식으로 생성된 이름에 적용됩니다.

  • 해당 이름(동의어)은 class, struct 또는 union 접두사 뒤에 나타날 수 없습니다.

  • 해당 이름은 클래스 선언 내에서 생성자 또는 소멸자 이름으로 사용할 수 없습니다.

요약하면 이 구문은 상속, 생성 또는 소멸을 위한 메커니즘을 제공하지 않습니다.

참고 항목

참조

형식 정의 지정자