익명 클래스 형식
클래스는 익명일 수 있습니다. 즉, 식별자 없이 선언할 수 있습니다. 이 기능은 다음과 같이 클래스 이름을 typedef
이름으로 바꿀 때 유용합니다.
typedef struct
{
unsigned x;
unsigned y;
} POINT;
참고 항목
이전 예제와 같이 익명 클래스를 사용하면 기존의 C 코드와 호환성을 유지하는 데 도움이 됩니다. 일부 C 코드에서는 익명 구조와 함께 사용하는 typedef
것이 널리 퍼져 있습니다.
다음과 같이 클래스 멤버를 참조하여 별도의 클래스에 포함되지 않은 것처럼 나타내려는 경우에도 익명 클래스가 유용합니다.
struct PTValue
{
POINT ptLoc;
union
{
int iValue;
long lValue;
};
};
PTValue ptv;
앞의 코드 iValue
에서는 다음과 같이 개체 멤버 선택 연산자(.)를 사용하여 액세스할 수 있습니다.
int i = ptv.iValue;
특정 제한이 익명 클래스에 적용됩니다. (익명 공용 구조체에 대한 자세한 내용은 다음을 참조하세요 .공용 구조체.) 익명 클래스:
생성자나 소멸자를 가질 수 없습니다.
함수에 인수로 전달할 수 없습니다(줄임표를 사용하여 형식 검사 해제하지 않는 한).
함수에서 반환 값으로 반환될 수 없습니다.
익명 구조체
Microsoft 전용
Microsoft C 확장을 사용하면 이름을 지정하지 않고 다른 구조체 내에서 구조체 변수를 선언할 수 있습니다. 이러한 중첩된 구조체를 익명 구조체라고 합니다. C++에서는 익명 구조체를 허용하지 않습니다.
포함하는 구조체의 멤버인 것처럼 익명 구조체의 멤버에 액세스할 수 있습니다.
// anonymous_structures.c
#include <stdio.h>
struct phone
{
int areacode;
long number;
};
struct person
{
char name[30];
char gender;
int age;
int weight;
struct phone; // Anonymous structure; no name needed
} Jim;
int main()
{
Jim.number = 1234567;
printf_s("%d\n", Jim.number);
}
//Output: 1234567
Microsoft 전용 종료
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기