728x90
파생 클래스를 선언하는 방법
class DClassName : visibilitySpec BClassName {
visibilitySpec_1:
데이터 멤버 또는 멤버함수 리스트;
visibilitySpec_2:
데이터 멤버 또는 멤버함수 리스트;
};
※ DClassName : 파생 클래스 이름
※ BClassName : 기초 클래스 이름
※ visibilitySpec : 가시성 지시어
☞ public, protected, private
파생 클래스는 파생 클래스의 이름 옆에 콜론(:)과 기초 클래스의 이름을 기록하여 선언한다.
기초 클래스의 멤버는 파생 클래스에 상속되어 마치 파생 클래스의 멤버인 것처럼 사용할 수 있다.
파생 클래스의 생성자는 기초 클래스의 생성자를 호출하고 나머지 필요한 부분만 정의한다.
파생 클래스의 생성자 정의
DClassName(fParameterList) : BClassName(bArgsList)
{
파생 클래스 생성자에 추가되는 사항
}
※ DClassName : 생성자 - 파생 클래스 이름을 사용
※ BClassName : 기초 클래스 생성자 - 기초 클래스 이름을 사용
※ fParameterList : 파생 클래스 생성자 형식 매개변수 목록
※ bArgsList : 기초 클래스 생성자에 전달할 인수 목록
기초 클래스의 생성자가 인수를 필요로 하면, 그 인수들을 넘겨주어야 한다. 파생 클래스는 기초 클래스를 바탕으로 만들어지는 것이므로, 파생 클래스의 생성자가 수행될 때 기초 클래스의 생성자가 먼저 호출되어 실행되고, 그 다음에 파생 클래스에서 구현한 명령문들이 실행된다.
엑세스 제어
클래스는 다른 클래스들이나 외부 함수가 자신의 멤버함수들을 엑세스하는 것을 허가하거나 금지함으로써 클래스 자신을 보호하는 기능이 있다. 일반적으로 파생 클래스를 갖지 않는 경우에는 클래스는 private 멤버와 public 멤버를 갖도록 설계한다.
가시성 지시어와 공개 영역
가시성 지시어 | 사용 범위 |
private | 소속 클래스의 멤버 함수 친구 클래스의 멤버 함수 및 친구 함수 |
protected | 소속 클래스의 멤버 함수 친구 클래스의 멤버 함수 및 친구 함수 파생 클래스의 멤버 함수 파생 클래스의 친구 클래스의 멤버 함수 및 친구 함수 |
public | 전범위 |
파생 클래스와 포인터
기초 클래스의 포인터는 파생 클래스의 객체를 가리킬 수 있다.
출처 : 전중남·이병래. 「C++프로그래밍」. 한국방송통신대학교출판문화원. 2020
728x90
'프로그래밍언어 > C++' 카테고리의 다른 글
[C++] 템플릿 (1) (0) | 2023.09.19 |
---|---|
[C++] 상속 (2) (0) | 2023.09.17 |
[C++] 연산자 다중정의 (2) (1) | 2023.09.15 |
[C++] 연산자 다중정의 (1) (0) | 2023.09.06 |
[C++] 클래스와 객체(2) (0) | 2023.09.05 |