문서를 영문으로 보려면 영문 확인란을 선택하세요. 마우스 포인터를 텍스트 위로 이동시켜 팝업 창에서 영문 텍스트를 표시할 수도 있습니다.
번역
영문
Visual Studio 2017을 사용하는 것이 좋습니다.

클래스 이름 선언 및 액세스

클래스 이름은 전역 또는 클래스 범위에서 선언할 수 있습니다. 클래스 범위에서 선언된 클래스를 "중첩된" 클래스라고 합니다.

Microsoft 전용

Microsoft C++의 로컬 클래스 선언에서는 함수 정의를 사용할 수 없습니다.

Microsoft 전용 종료

클래스 범위에 클래스 이름을 포함하면 바깥쪽 범위에서 이름이 동일한 다른 요소가 숨겨집니다. 이러한 선언에 의해 숨겨진 이름은 상세 형식 지정자를 통해서만 참조할 수 있습니다. 다음 예제에서는 상세 형식 지정자를 사용하여 숨겨진 이름을 참조하는 예를 보여 줍니다.

// class_names2.cpp
struct A   // Global scope definition of A.
{
    int a;
};

int main()
{
    char A = 'a';   // Redefine the name A as an object.
    struct A AObject;
}

구조체를 참조하는 이름 Achar 개체를 참조하는 A에 의해 숨겨지므로 struct(class-key)를 사용하여 AObjectA 형식으로 선언해야 합니다.

class-key를 사용하면 정의를 제공하지 않고 클래스를 선언할 수 있습니다. 이처럼 정의 없이 클래스를 선언하면 전방 참조를 위한 클래스 이름이 포함됩니다. 이 기술은 friend 선언에서 서로를 참조하는 클래스를 디자인할 때 유용합니다. 또한 헤더 파일에는 클래스 이름이 있어야 하지만 정의는 필요하지 않은 경우에도 유용합니다. 예를 들면 다음과 같습니다.

// RECT.H
class Point;   // Nondefining declaration of class Point.
class Line
{
public:
    int Draw( Point &ptFrom, Point &ptTo );
    ...
};

위의 샘플에서 이름 Point가 필요하기는 하지만 해당 이름을 제공하는 정의 선언일 필요는 없습니다.

표시: