씹어먹는 C++
7장 클래스의 상속 270p - 297p
다른 클래스의 내용을 그대로 포함할 수 있는 작업을 가능하도록 함
상속을 통해 다른 클래스의 정보를 물려 받아서 사용 가능
class Base {
std::string s;
public:
Base() : s("기반") { std::cout << "기반 클래스" << std::endl; }
void what() { std::cout << s << std::endl; }
};
class Derived : public Base {
std::string s;
public:
Derived() : Base(), s("파생") {
std::cout << "파생 클래스" << std::endl;
// Base 에서 what() 을 물려 받았으므로
// Derived 에서 당연히 호출 가능하다
what();
}
};
int main() {
std::cout << " === 기반 클래스 생성 ===" << std::endl;
Base p;
std::cout << " === 파생 클래스 생성 ===" << std::endl;
Derived c;
return 0;
}
=== 기반 클래스 생성 ===
기반 클래스
=== 파생 클래스 생성 ===
기반 클래스
파생 클래스
기반
접근 지시자 protected
상속받는 클래스에서는 접근 가능하고 그 외의 기타 정보는 접근 불가능
class A : public(접근 지시자) B
public 상속
기반 클래스의 접근 지시자들에 영향 없이 그대로 작동
protected 상속
public 은 protected로 바뀜 나머지는 그대로 유지
private 상속
모든 접근 지시자들이 private으로 바뀜