클래스 형식으로 형식 정의 사용
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 접두사 뒤에 나타날 수 없습니다.
해당 이름은 클래스 선언 내에서 생성자 또는 소멸자 이름으로 사용할 수 없습니다.
요약하면 이 구문은 상속, 생성 또는 소멸을 위한 메커니즘을 제공하지 않습니다.