다음을 통해 공유


클래스 멤버

클래스에 사용할 수 있는 멤버의 종류는 다음과 같습니다.

설명

액세스 지정자라고 하는 키워드를 사용하여 클래스 멤버 목록을 private, protected 및 public 섹션으로 나눌 수 있습니다. 액세스 지정자 뒤에 콜론(:)이 와야 합니다. 이 섹션은 인접해 있을 필요가 없으므로 이 키워드가 멤버 목록에서 여러 번 나올 수 있습니다. 다음 액세스 지정자나 닫는 중괄호가 나올 때까지 키워드가 모든 멤버의 액세스를 지정합니다.

멤버 목록의 멤버 선언은 세미콜론(;)으로 구문됩니다. 클래스 멤버 선언 구문을 참조하십시오.

멤버 목록의 용도는 다음과 같습니다.

  • 주어진 클래스의 전체 멤버 집합을 선언합니다.

  • 여러 클래스 멤버와 연결된 액세스(공용, 전용 또는 보호됨)를 지정합니다.

멤버 목록 선언에서 멤버를 한 번만 선언할 수 있습니다. 멤버를 다시 선언하면 오류 메시지가 생성됩니다. 멤버 목록은 전체 멤버 집합이므로 이후의 클래스 선언을 사용하여 주어진 클래스에 멤버를 추가할 수 없습니다.

멤버 선언자는 이니셜라이저를 포함할 수 없습니다. 다음 코드에 표시된 대로 이니셜라이저를 제공하면 오류 메시지가 생성됩니다.

// class_members1.cpp
// C2864 expected
class CantInit
{
public:
    long l = 7;       // Error: attempt to initialize
                      //  class member.
    static int i = 9; // Error: must be defined and initialized
                      // outside of class declaration.
};
int main()
{
}

주어진 클래스 형식의 개체마다 비정적 멤버 데이터의 개별 인스턴스가 만들어지므로 멤버 데이터를 올바르게 초기화하려면 클래스의 생성자를 사용하십시오. 생성자에 대해서는 생성자에서 설명합니다.

주어진 클래스 형식의 모든 개체에 대해 정적 데이터 멤버의 공유 복사본이 한 개만 있습니다. 정적 데이터 멤버를 정의해야 하며 파일 범위에서 초기화할 수 있습니다. 정적 데이터 멤버에 대한 자세한 내용은 정적 데이터 멤버를 참조하십시오. 다음 예제에서는 이 초기화를 수행하는 방법을 보여 줍니다.

// class_members2.cpp
class CanInit
{
public:
    CanInit() { l = 7; } // Initializes l when new objects of type 
                         //  CanInit are created.
    long       l;
    static int i;
    static int j;
};

// i is defined at file scope and initialized to 15.
// The initializer is evaluated in the scope of CanInit.
int CanInit::i = 15;                                                       

// The right side of the initializer is in the scope 
// of the object being initialized
int CanInit::j = i;  

int main()
{
}

참고

정의할 i가 CanInit 클래스의 멤버가 되도록 지정하려면 클래스 이름 CanInit가 i 앞에 와야 합니다.

Microsoft 전용

Microsoft C++에서는 static, const integral 및 const enum 데이터 멤버를 클래스 정의에서 초기화할 수 있습니다. C 및 C++에 대한 Microsoft 확장을 참조하십시오.

참고 항목

참조

클래스, 구조체 및 공용 구조체