Kong Eunho

상속

2025년 10월 16일 09시
카테고리 - LECTURE, 객체지향프로그래밍II


객체지향프로그래밍II(김정준) 7주차 강의내용

상속(Inheritance)
C++에서의 상속이란?

상속의 목적 및 장점

  1. 간결한 클래스 작성
    기본 클래스의 기능을 물려받아 파생 클래스를 간결하게 작성
  2. 클래스 간의 계층적 분류 및 관리의 용이함
    상속은 클래스들의 구조적 관계 파악 용이
  3. 클래스 재사용과 확장을 통한 소프트웨어 생산성 향상
    빠른 소프트웨어 생산 필요
    기존에 작성한 클래스의 재사용 – 상속
    상속받아 새로운 기능을 확장
    앞으로 있을 상속에 대비한 클래스의 객체 지향적 설계 필요

상속 선언
Class Student : public Person
Student 클래스는 Person 클래스의 멤버를 물려받음

업 캐스팅(up-casting)
파생 클래스 포인터가 기본 클래스 포인터에 치환되는 것
Person* pBase = pDer; : 업 캐스팅
이 경우 pBase는 파생 클래스의 멤버를 이용할 수 없음

다운 캐스팅(down-casting)
기본 클래스의 포인터가 파생 클래스의 포인터에 치환되는 것
pDer = (Student *)pBase; : 다운 캐스팅

상속 관계에서의 생성자
파생 클래스의 객체가 생성될 때
기본 클래스 생성자 -> 파생 클래스 생성자
컴파일러가 파생 클래스에서 묵시적으로 기본 클래스의 기본 생성자를 호출하도록 함
기본 클래스의 기본 생성자가 존재하지 않는다면 오류가 발생할 수 있음

Class B : public A {
public :
    B(int x) : A(x + 3)
}
위와 같이 명시적으로 생성자 선택 가능

상속 관계에서의 소멸자
파생 클래스의 객체가 소멸될 때
파생 클래스 소멸자 -> 기본 클래스 소멸자

상속 지정
◼ 상속 선언 시 public, private, protected의 3가지 중 하나 지정
◼ 기본 클래스의 멤버의 접근 속성을 어떻게 계승할지 지정
◼ public – 기본 클래스의 protected, public 멤버 속성을 그대로 계승
◼ private – 기본 클래스의 protected, public 멤버를 private으로 계승
◼ protected – 기본 클래스의 protected, public 멤버를 protected로 계승

다중 상속
class MusicPhone : public MP3, public MobilePhone
상속받으려는 클래스를 나열하는 방식으로 다중 상속이 가능
X를 상속받은 클래스 A, B를 Y에게 다중 상속한다면, X의 멤버가 중복 상속되는 문제가 발생

가상 상속
다중 상속으로 인한 중복 상속 문제 해결
파생 클래스의 선언문에서 기본 클래스 앞에 virtual을 붙여 가상 상속 선언
파생 클래스의 객체가 생성될 때 기본 클래스의 멤버를 한 번만 생성

◀ 이전 글 LECTURE, 서버프로그래밍
파일 명령어
2025-10-14
목록으로 다음 글 ▶ LECTURE, 서버프로그래밍
우분투 에디터
2025-10-16