다음을 통해 공유


기본 클래스 초기화

직접 기본 클래스는 멤버 개체와 거의 동일한 방식으로 초기화됩니다. 다음 예제를 참조하십시오.

// spec1_initializing_base_classes.cpp
// Declare class MyClass.
class MyClass
{
public:
   MyClass( int rSize )
   {
   }
};

//  Declare class DialogBox, derived from class MyClass
class DialogBox : public MyClass
{
public:
   DialogBox( int rSize );
};

//  Define the constructor for DialogBox. This constructor
//   explicitly initializes the MyClass subobject.
DialogBox::DialogBox( int rSize ) : MyClass( rSize )
{
}

int main()
{
}

DialogBox의 생성자에서 MyClass 기본 클래스는 rSize 인수를 사용하여 초기화됩니다. 이 초기화는 초기화할 기본 클래스의 이름과 뒤에 오는 해당 클래스 생성자에 대한 괄호로 묶은 인수 목록으로 구성됩니다.

기본 클래스를 초기화할 때 기본 클래스의 구성 요소를 나타내는 하위 개체가 아닌 개체는 "완전한 개체"로 간주됩니다. 완전한 개체의 클래스는 개체에 대한 "가장 많이 파생된" 클래스로 간주됩니다.

가상 기본 클래스를 나타내는 하위 개체는 가장 많이 파생된 클래스의 생성자에 의해 초기화됩니다. 즉, 가상 파생이 지정된 곳에서 가장 많이 파생된 클래스가 가상 기본 클래스를 명시적으로 초기화해야 하거나 가상 기본 클래스에 기본 생성자가 있어야 합니다. 가장 많이 파생되는 클래스 이외의 클래스에 대한 생성자에 나타나는 가상 기본 클래스의 초기화는 무시됩니다.

기본 클래스의 초기화는 대개 직접 기본 클래스로 제한되지만 클래스 생성자는 간접 가상 기본 클래스를 초기화할 수 있습니다.

참고 항목

참조

기본 항목 및 멤버 초기화