[C++] 큐, 스택, 단순 링크드 리스트, 클래스 상속, public 파생, public 상속
큐(Queue)
- 큐는 항목들을 순서대로 보관하는 추상화 데이터형(ADT)이다.
- FIFO(선입선출)구조로, 큐의 머리 부분에서만 큐의 삭제가 일어나고 꼬리 부분에서만 데이터 삽입이 추가된다.
스택(Stack)
- LIFO(후입선출) 구조로, 스택의 동일한 한쪽 끝에서만 추가와 삭제가 일어난다.
단순 링크드 리스트(Singly Linked List)
- 각 노드가 그 다음 노드를 지시하는 하나의 링크(또는 포인터)만 가지고 있는 구조
- 첫번째 노드의 주소만 알면, 그 리스트에 연결된 각 노드들이 지시하는 포인터들을 계속 추적해 갈 수 있다.
- 리스트의 마지막 노드에 있는 포인터는 연결된 노드가 더 이상 없다는 뜻으로 NULL로 설정된다.
클래스 상속 (Class Inheritance)
- 기초 클래스라고 부르는 클래스로부터 모든 메서드와 멤버들을 상속받아, 새로운 파생 클래스를 만들 수 있게 한다.
- 즉, 기초 클래스를 파생 클래스로 정의할 수 있게 함으로써 프로그래밍 코드를 사용자의 특별하 ㄴ요구에 대응할 수 있게 해준다.
public 파생 (Public Derivation)
- 파생 클래스의 객체는 기초 클래스의 객체를 합병한다.
- public 파생에서는 기초 클래스의 public 멤버들이 파생 클래스의 public 멤버가 된다.
- 기초 클래스의 private 부분도 파생 클래스의 일부가 되지만, 그들은 기초 클래스의 protected 메서드와 public 메서드를 통해서만 접근할 수 있다.
- 즉, 파생 클래스는 기초 클래스의 private 데이터에 직접적으로 접근하지 못하고, 기초클래스의 public 메서드를 사용해야 한다.
- 각각의 파생 클래스는 자신만의 생성자가 필요하다.
- 기초클래스 생성자를 먼저 호출한 뒤, 파생 클래스의 생성자를 호출하게 된다.
- 파괴는 파생 클래스의 파괴자를 먼저 호출하고, 기초 클래스의 파괴자를 호출한다.
public 상속
- public 상속은 is-a 관계를 나타낸다. ( is-a-kind-of 로 표시할 수도 있다 )
- is-a 관계란 파생 클래스 객체가 기초 클래스 객체이기도 하다는 것을 뜻한다. (= 파생 클래스 객체가 기초 클래스 객체의 한 종류다)
- 기초 클래스 객체를 대상으로 수행할 수 있는 모든 작업을, 파생 클래스 객체에 대해서도 수행할 수 있다.
- 다른 관계 : has-a 관계, is-like-a 관계, is-implemented-as-a 관계, uses-a 관계
- 파생 클래스는 기초 클래스 생성자, 파괴자, 대입 연산자는 상속하지 않는다.