컴퓨터 언어/C++

[C++] C++ 11일차 상속 3

훈츠 2020. 4. 13. 14:20
반응형

안녕하세요. 훈츠입니다. 금일은 클래스간 관계와 생성자 상속과 호출에 대해 정리 해보도록 하겠습니다. 

 


클래스 관계 설정 ( 클래스 계통도 )

is - a 관계 ( 상속 )

  • 접근 지정자를 통한 상속 관계

has - a 관계

  • 다른 클래스를 멤버로 가지고 있는 관계 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//훈스 블로그---------------------------------------------------------------------------------------------------코드//
class A {
public:    void Print() { cout << "A 클래스"; }
};
class B : public A{ }; //is a 관계 
class C {
public: A a; //has a 관계 
};
 
int main()
{
    B b;
    b.Print();
    C c;
    c.a.Print();
}
 
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter
http://colorscripter.com/info#e" target="_blank" style="text-decoration:none;color:white">cs
 

생성자 상속과 호출

  • 기본 생성자는 상속되지 않는다. 

  • 생성자에 매개변수가 있는 경우, 파생 클래스에서 상속 받은 클래스의 생성자  ㅍㅍㅍㅍㅍㅍㅍㅍㅍㅍㅍ  

  • 상속 관계에서 생성자 호출과 소멸자 호출 순서 

    •  상속 순서 = A {} , B : A {}, C : B {} 

    • 생성자 호출 순서  A -> B -> C 

    • 소멸자 호출 순서 C -> B -> A

 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//훈스 블로그---------------------------------------------------------------------------------------------------코드//
class A {
private
    int nVal;
public:
    A(int val) : nVal(val) { cout << "A 클래스생성자\n"; }; //생성자에서 초기화 하기 
    ~A() { cout << "A 클래스소멸자\n"; };
};
class B : public A {
public:
    B(int val) : A(val){ cout << "B 파생클래스생성자\n"; }; //A 클래스 생성자 호출
    ~B() { cout << "B 파생클래스소멸자\n"; };
};
 
int main()
{
    B b(2);
}
 
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter
http://colorscripter.com/info#e" target="_blank" style="text-decoration:none;color:white">cs
 

 

반응형