안선생의 개발 블로그

C++ 상속 본문

C++

C++ 상속

안선생 2022. 9. 21. 23:55

상속 

부모클래스의 기능을 자식 클래스가 쓸 수 있다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
#include<iostream>
using namespace std;
class CParent //부모 클래스
{
protected//자식은 접근 가능
    int    m_i;
public:
    CParent() // 기본생성자
        :m_i(0)
    {}
    CParent(int a) // 이 생성자가 실행됨
        :m_i(a)
    {}
    ~CParent()
    {
        cout << "부모 소멸자" << endl;
    }
public:
    void Setint(int a)
    {
        m_i = a;
    }
    void output()
    {
        cout << "Parent"<<endl;
    }
};
 
class Child : public CParent //자식 클래스 class 이름 : 접급제한자 부모
{
private:
    float   f;
public:
    Child()
    : f(0.f)
    , CParent(100// 부모의 생성자를 고르고 싶으면 명시적으로 오버로딩된 함수에 맞춰준다.
    {
    //    m_i = 1; // 부모의 멤버함수가 private 선언되서 접근이 안된다. protected쓰면 가능
    }
    ~Child()
    {
        cout << "자식 소멸자" << endl;
    }
public:
    //상속받은 부모클래스의 함수를 재정의(오버라이딩) 함
    void output()
    {
        cout << "Child" << endl;
    }
    
};
int main()
{
    //객체지향 언어 특징
    //1. 캡슐화 (은닉성)
    
    CParent cp; 
    Child ch; //실제 호출은 자식부터 시작됨
    
    //cp.output(); // 부모의 함수가 출력
    //ch.output(); // 상속받은 부모클래스의 함수를 재정의(오버라이딩)되서 자식 함수가 호출됨
    //ch.CParent::output(); // 부모의 함수가 출력됨
    //cp.Setint(10);
    //ch.Setint(10); // 상속을 해서 부모의 기능을 쓸 수 있음
 
    //상속
    //자식 or 부모 클래스는 상속관계에서 다른 클래스의 멤버를 초기화 할 수 없다.
    //생성자 호출 순서 자식 -> 부모
    // 생성자 실행 순서, 초기화 순서 부모 -> 자식
 
    // 소멸자 실행 및 호출 순서, 자식 -> 부모
    // 오버 라이딩 
    // 부모 클래스의 멤버함수를 자식쪽에서 재정의 함으로써, 자식 클래스에 구현된 기능이 호출되도록 한다.
    
    
    return 0;
}
 
 
cs

출처 : https://www.youtube.com/c/AssortRockGameAcademy

'C++' 카테고리의 다른 글

C++ 다형성  (0) 2022.09.22
C++ 오버라이딩  (0) 2022.09.22
C++ 이진 탐색 트리 구현  (0) 2022.09.18
C++ Tree  (0) 2022.09.18
C++ list iterator  (1) 2022.09.13