[c++] 생성자와 소멸자의 상속 시 동작
오늘은 C++에서 생성자와 소멸자가 상속될 때의 동작에 대해 알아보겠습니다. 생성자와 소멸자의 상속은 객체 지향 프로그래밍에서 중요한 부분이며, 제대로 이해하지 않으면 예상치 못한 결과를 초래할 수 있습니다.
생성자의 상속
- 생성자는 기본 클래스의 생성자가 파생 클래스로 상속될 때, 파생 클래스에서 별도로 정의되지 않았다면 기본 클래스의 생성자가 자동으로 호출됩니다.
- 파생 클래스에서 생성자를 명시적으로 정의하고 싶다면, 기본 클래스의 생성자가 자동으로 호출되지 않으며, 명시적으로 호출해야 합니다.
- 기본 클래스의 생성자가 파생 클래스로 상속되지 않고, 파생 클래스에서 명시적으로 호출되지 않으면, 기본 클래스의 디폴트 생성자가 호출됩니다.
아래는 생성자 상속의 예시 코드입니다.
class Base {
public:
Base() {
std::cout << "Base 생성자 호출" << std::endl;
}
};
class Derived : public Base {
public:
Derived() {
std::cout << "Derived 생성자 호출" << std::endl;
}
};
위 코드에서 파생 클래스 Derived
의 생성자가 호출될 때, 기본 클래스인 Base
의 생성자가 자동으로 호출됩니다.
소멸자의 상속
- 소멸자는 생성자와는 달리 기본 클래스의 소멸자가 파생 클래스로 상속될 때, 항상 자동으로 호출됩니다.
- 파생 클래스에서 소멸자를 명시적으로 정의하고 싶다면, 기본 클래스의 소멸자가 자동으로 호출됩니다.
- 파생 클래스의 소멸자에서 별도의 처리가 필요한 경우, 기본 클래스의 소멸자를 명시적으로 호출할 수 있습니다.
다음은 소멸자 상속에 대한 예시 코드입니다.
class Base {
public:
~Base() {
std::cout << "Base 소멸자 호출" << std::endl;
}
};
class Derived : public Base {
public:
~Derived() {
std::cout << "Derived 소멸자 호출" << std::endl;
}
};
위 코드에서는 파생 클래스 Derived
의 소멸자가 호출될 때, 기본 클래스인 Base
의 소멸자도 자동으로 호출됩니다.
이제 생성자와 소멸자의 상속 시 동작에 대해 어느 정도 이해하셨을 것입니다. 생성자와 소멸자의 상속은 객체 지향 프로그래밍에서 중요한 개념이므로, 이를 잘 숙지하는 것이 중요합니다.