Share via


멤버 개체 초기화

클래스는 클래스 형식의 멤버 개체를 포함할 수 있지만, 멤버 개체에 대한 초기화 요구 사항을 충족하려면 다음 조건 중 하나를 충족해야 합니다.

  • 포함된 개체의 클래스에 생성자가 필요하지 않습니다.

  • 포함된 개체의 클래스에 액세스할 수 있는 기본 생성자가 있습니다.

  • 포함하는 클래스의 모든 생성자가 포함된 개체를 명시적으로 초기화합니다.

다음 예제에서는 이러한 초기화를 수행하는 방법을 보여 줍니다.

// spec1_initializing_member_objects.cpp
// Declare a class Point.
class Point
{
public:
    Point( int x, int y ) { _x = x; _y = y; }
private:
    int _x, _y;
};

// Declare a rectangle class that contains objects of type Point.
class Rect
{
public:
    Rect( int x1, int y1, int x2, int y2 );
private:
    Point _topleft, _bottomright;
};

//  Define the constructor for class Rect. This constructor
//   explicitly initializes the objects of type Point.
Rect::Rect( int x1, int y1, int x2, int y2 ) :
_topleft( x1, y1 ), _bottomright( x2, y2 )
{
}

int main()
{
}

위의 예제에 나와 있는 Rect 클래스에는 Point 클래스의 두 멤버 개체가 포함되어 있습니다. 이 클래스의 생성자는 _topleft 및 _bottomright 개체를 명시적으로 초기화합니다. 정의에서 생성자의 닫는 괄호 뒤에 콜론이 옵니다. 콜론 뒤에는 Point 형식의 개체를 초기화하는 데 사용할 멤버 이름과 인수가 옵니다.

참고

멤버 이니셜라이저가 생성자에서 지정되는 순서는 멤버가 생성되는 순서에 영향을 주지 않습니다. 멤버는 클래스에서 선언된 순서대로 생성됩니다.

참조 및 const 멤버 개체는 기본 항목 및 멤버 초기화의 문법 단원에 나와 있는 멤버 초기화 구문을 사용하여 초기화되어야 합니다. 이러한 개체를 초기화하는 다른 방법은 없습니다.

참고 항목

참조

기본 항목 및 멤버 초기화