c++ 클래스 상속
2019. 8. 25. 01:51ㆍPL/C++
기초 클래스를 부모 클래스, 유도 클래스를 자식 클래스라고 말한다
1. 유도 클래스 객체생성 과정에서 기초 클래스의 생성자는 반드시 호출된다
2. 유도 클래스의 생성자에서 기초 클래스의 생성자 호출을 명시하지 않으면, 기초 클래스의 void 생성자가 호출된다
3. 유도 클래스의 객체가 소멸될 때에는 유도 클래스의 소멸자가 실행되고 난 다음에 기초 클래스의 소멸자가 실행된다. 스택에 생성된 객체의 소멸순서는 생성순서와 반대다
그리고 클래스 상속에서 유도 클래스는 기본 클래스의 상속 속성을 정할 수 있다
1. public 상속은 기초 클래스의 속성을 그대로 가져온다
2. protected 상속은 protected 변수는 그대로 protected 속성으로, public 속성은 protected로 변환한다. 그러면 외부에서 접근을 못하게 된다
3. private 상속은 protected, public 모두를 private으로 받아오게 된다. 따라서 해당 유도 클래스는 더이상 다른 유도 클래스에 상속을 할 수 없는 형태다
웬만해서는 public 상속 이외에는 잘 사용하지 않는다
#include <iostream>
using namespace std;
class AAA {
private:
int num1;
protected:
int num2;
public:
int num3;
AAA() {
num1 = 1;
num2 = 2;
num3 = 3;
}
};
class BBB : private AAA {
public:
void show() {
cout << num2 << '\n'; // num2는 private으로 속성 변환
cout << num3 << '\n'; // num3는 private으로 속성 변환
}
};
class CCC : public BBB {
public:
void show() {
cout << num2 << '\n'; // 컴파일 에러
cout << num3 << '\n'; // 컴파일 에러
}
};
int main(void) {
BBB b;
b.show();
return 0;
}
'PL > C++' 카테고리의 다른 글
stack, queue 클래스로 간단히 구현하기 (0) | 2019.08.25 |
---|---|
c++ 클래스 상속의 조건 (0) | 2019.08.25 |
const 키워드 오버로딩 (0) | 2019.08.24 |
복사 생성자 호출 시점 (0) | 2019.08.24 |
c++에서의 struct (0) | 2019.08.24 |