42seoul:: CPP 03

jahlee·2023년 7월 26일
0

개인 공부

목록 보기
18/23

파생 클래스 (derived class)

파생 클래스(derived class)란 기초 클래스의 모든 특성을 물려받아 새롭게 작성된 클래스를 가리킨다.

class 파생클래스이름 : 접근제어지시자 기초클래스이름[, 접근제어지시자 기초클래스이름, ...] {
    // 파생 클래스 멤버 리스트
}

C++에서 파생 클래스는 다음과 같은 특징을 가지고 있다.
1. 파생 클래스는 반드시 자신만의 생성자를 작성해야 한다.
2. 파생 클래스에는 기초 클래스의 접근할 수 있는 모든 멤버 변수들이 저장된다.
3. 파생 클래스는 기초 클래스의 접근할 수 있는 모든 멤버 함수를 사용할 수 있다.
4. 파생 클래스에는 필요한 만큼 멤버를 추가할 수 있다.

파생클래스를 객체화 하게되면 기본 클래스의 생성자가 호출이 되게되는데, 이 이유는 파생 클래스가 기본 클래스의 멤버를 포함하고 있기 때문이다. 파생 클래스의 생성자는 파생 클래스의 멤버를 초기화하기 전에 기본 클래스의 생성자를 호출하여 기본 클래스의 멤버를 초기화한다.

virtual

가상 함수는 기본 클래스내에서 선언되어 파생 클래스에 의해 재정의 되는 멤버 함수를 의미한다.

  1. 클래스의 공개(public) 섹션에 선언한다.
  2. 가상 함수는 정적(static)일 수 없으며 다른 클래스의 친구(friend) 함수가 될 수도 없다.
  3. 가상 함수는 실행시간 다형성을 얻기위해 기본 클래스의 포인터 또는 참조를 통해 접근(access)해야 한다.
  4. 가상 함수의 프로토타입(반환형과 매개변수)은 기본 클래스와 파생 클래스에서 동일하다.
  5. 클래스는 가상 소멸자를 가질 수 있지만 가상 생성자를 가질 수 없다.

가상 상속

다이아몬드 형식의 상속을 가지게 될때 베이스 함수의 재호출을 막기위하여 가상 상속을 한다.

0개의 댓글