c언어의 상속

2022. 12. 10. 16:14c

8장에서는 추상화와 c언어에서 상속에 대해서 어떻게 해야하는지 

알아보는 시간을 갖는다. 이장에서 보고 넘어가야 할 부분은 

 

부모를 자식에 선언해 둘 때 구조체 형식으로 접근할 것 인지. 아니면

구조체 포인터 형식으로 접근할지 에 대한 차이가 존재한다.

 

이장에서는 이에 대한 차이점이 무엇인지 알아보는 시간을 가진다.

 

상속의 본질은 내부적으로 합성관계를 가지는 녀석이라고 볼 수 있다 .

c언어에서 구조체가 실제 상속을 제공해주거나 하지 않기 때문에 

 

반드시 완벽한 구조체 형식을 가지고 있어야 한다.

(불완전한 형식으로 변수 선언 불가능)

 

또한 부모 구조체의 선언은 최상단에 위치해야 하는데 이는 이유

 

구조체 변수로 사용하는 경우 부모를 인스턴스화 하여 사용하는 것이 아니기 때문에 

부모개체의 정보가 최상단에 위치하여 컨버트 되어야 하는것이다.

 

상속의 생성과정은 자식에서 부모를 선언하고 자식에서 부모 초기화를 호출 하여 동작하는데 

개체의 파괴시에는 생성의 반대로 자식 개체를 해제하고 부모 개체를 해제 해야한다.

 

구조체 포인터를 이용하는 경우에는 부모 개체를 인스턴스화 하여 가지고 있는 개념으로 

이경우에는 선언의 위치에 구애받지 않게 된다 . 하지만 업캐스팅과 같은 방식을 사용할 수 없다고 하니 

필요한 경우에는 다르게 사용할 수 있도록 하자.

 

다형성 

 

다형성은 실제 관계가 아니고 다른 행위를 갖는 같은 코드를 가지는 것 

 

다형성의 필요성 : 추상화를 통해 자식 클래스에서 오버라이딩 되어야 하는 모호한 행위를

선언해 두기 위해서 라고 볼 수 있음.

 

실제 다형성이 벌어지는 공간은 생성자를 호출 하는 부분으로 

이부분에서 자식의 클래스 함수로 대체하는 과정에서 다형성을 만족하게 된다. 

 

 

'c' 카테고리의 다른 글

10장 유닉스  (0) 2022.12.25
c 로 하는 추상화  (0) 2022.12.12
7장정리.  (0) 2022.12.04
6장 c 로 oop?  (0) 2022.12.03
프로세스 메모리 구조., 힙 스택  (2) 2022.11.27