1.상속
객체 지향 프로그래밍의 핵심 개념 중 하나로, 기존의 클래스를 기반으로 새로운 클래스를 정의할 수 있게 해줍니다.
상속을 통해 기존 클래스의 속성과 메서드를 재사용하고, 새로운 기능을 추가하거나 기존 기능을 수정할 수 있습니다.
class BaseClass {
// 기본 클래스의 멤버
};
class DerivedClass : public BaseClass {
// 파생 클래스의 멤버
};
2.상속의 종류
2-1.공개 상속
기본 클래스의 공개(public) 멤버와 보호(protected) 멤버를 그대로 상속받습니다.
외부에서는 파생 클래스를 기본 클래스의 대체로 사용할 수 있습니다.
class DerivedClass : public BaseClass {
// 파생 클래스의 멤버
};
2-2.보호 상속
기본 클래스의 공개(public) 멤버와 보호(protected) 멤버를 상속받습니다.
외부에서는 파생 클래스가 기본 클래스를 사용할 수 없습니다.
class DerivedClass : protected BaseClass {
// 파생 클래스의 멤버
};
2-3.비공개 상속
파생 클래스는 기본 클래스의 모든 멤버를 상속받지만,
파생 클래스의 외부에서는 기본 클래스를 사용할 수 없습니다.
class DerivedClass : private BaseClass {
// 파생 클래스의 멤버
};
3.상속과 생성자/소멸자
- 기본 클래스의 생성자는 파생 클래스의 생성자가 호출되기 전에 호출됩니다.
- 기본 클래스의 소멸자는 파생 클래스의 소멸자 호출 이후에 호출됩니다.
#include <iostream>
class Base {
public:
Base() {
std::cout << "Base Constructor" << std::endl;
}
~Base() {
std::cout << "Base Destructor" << std::endl;
}
};
class Derived : public Base {
public:
Derived() {
std::cout << "Derived Constructor" << std::endl;
}
~Derived() {
std::cout << "Derived Destructor" << std::endl;
}
};
int main() {
Derived obj;
return 0;
}
Base Constructor
Derived Constructor
Derived Destructor
Base Destructor
4.상속의 다형성
4-1.가상 함수 (Virtual Function)
기본 클래스에서 선언되며, 파생 클래스에서 재정의할 수 있는 함수입니다.
class Base {
public:
virtual void speak() {
std::cout << "Base class speaking..." << std::endl;
}
virtual ~Base() = default; // 가상 소멸자
};
class Derived : public Base {
public:
void speak() override {
std::cout << "Derived class speaking..." << std::endl;
}
};
'Language > C++' 카테고리의 다른 글
[C++] 연산자 오버로딩 (0) | 2024.08.04 |
---|---|
[C++] 클래스 (0) | 2024.08.02 |
[C++] 템플릿 (0) | 2024.08.01 |