8장. 객체 간 관계와 상속

2025. 3. 5. 21:25·SW개발/C++
반응형
  • 객체 간 관계: 포함 관계와 상속 관계로 나뉨
  • 포함 관계(has-a): 특정 객체가 다른 객체를 포함하는 관계
  • 상속 관계(is-a): 한 클래스가 다른 클래스를 확장하는 관계
  • 재정의(오버라이딩): 상속받은 메서드를 새로운 방식으로 구현
  • 가상 함수와 다형성을 활용하여 객체지향 설계를 효율적으로 수행 가능

6.1 객체 간 관계

  • 포함 관계: 한 클래스가 다른 클래스의 멤버 변수로 포함됨
  • 상속 관계: 한 클래스가 다른 클래스로부터 기능을 확장
class Engine {
public:
    void start() { cout << "Engine started" << endl; }
};

class Car {
    Engine engine; // 포함 관계
public:
    void start() { engine.start(); }
};

6.2 상속에 대한 기본 이론

  • class Derived : public Base 형태로 상속
  • 기본 클래스의 멤버를 상속받아 사용 가능
  • 접근 지정자: public, protected, private
class Base {
protected:
    int value;
};
class Derived : public Base {
public:
    void setValue(int v) { value = v; }
};

6.3 파생 클래스 작성

  • 파생 클래스에서 새로운 멤버 함수 및 변수를 추가 가능
class Base {
public:
    void show() { cout << "Base class" << endl; }
};
class Derived : public Base {
public:
    void show() { cout << "Derived class" << endl; }
};

6.4 메서드 재정의(중요)

  • virtual 키워드를 사용하여 가상 함수로 선언
  • 다형성을 활용하여 동적 바인딩 수행
class Base {
public:
    virtual void show() { cout << "Base class" << endl; }
};
class Derived : public Base {
public:
    void show() override { cout << "Derived class" << endl; }
};

6.5 상속과 생성자, 소멸자

  • 생성자는 기본 클래스 → 파생 클래스 순으로 호출
  • 소멸자는 반대로 파생 클래스 → 기본 클래스 순으로 호출
class Base {
public:
    Base() { cout << "Base 생성자" << endl; }
    ~Base() { cout << "Base 소멸자" << endl; }
};
class Derived : public Base {
public:
    Derived() { cout << "Derived 생성자" << endl; }
    ~Derived() { cout << "Derived 소멸자" << endl; }
};
  • 상속 관계에서 부모 클래스의 생성자를 명시적으로 호출해야 할 경우 : Base() 형태로 초기화 목록을 사용
  • 다형성 활용 시 소멸자를 virtual로 선언해야 올바르게 동작
class Base {
public:
    virtual ~Base() { cout << "Base 소멸자" << endl; }
};
반응형
저작자표시 비영리 변경금지 (새창열림)

'SW개발 > C++' 카테고리의 다른 글

7장. 연산자 다중 정의  (0) 2025.03.05
L-value와 R-value  (0) 2025.02.28
6장. 복사 생성자와 임시 객체  (0) 2025.02.26
5장. 클래스  (0) 2025.02.26
4장. 함수와 네임스페이스  (0) 2025.02.26
'SW개발/C++' 카테고리의 다른 글
  • 7장. 연산자 다중 정의
  • L-value와 R-value
  • 6장. 복사 생성자와 임시 객체
  • 5장. 클래스
코코도롱
코코도롱
    반응형
  • 코코도롱
    도롱이의 전자공학소
    코코도롱
  • 전체
    오늘
    어제
    • 분류 전체보기 (60)
      • AI (16)
        • 데이터 분석과 모델 학습 (4)
        • 모델별 정리 (7)
        • (PJT)음성 화자 분류 (4)
      • SW개발 (38)
        • C++ (9)
        • 면접을 위한 CS 전공지식 노트 (24)
        • Django+Vue.js (0)
        • 이런저런 개발이야기 (1)
        • 갑자기 C코테를 봐야할때 (2)
        • RPI5 프로젝트 (1)
        • 트러블슈팅 (1)
      • ESG (2)
        • 내가 쓰는 Assay (1)
        • 뉴스 스크랩 (1)
      • 반도체 (4)
        • 반도체 (3)
        • 슬기로운 학부생활 (1)
        • 회로 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    반도체 소자 공학
    메시지큐
    데이터분석 #머신러닝 #딥러닝 #데이터사이언스 #알고리즘 #데이터전처리
    반도체 물성
    c언어 입출력
    데이터분석 #데이터전처리 #결측치 #머신러닝 #딥러닝 #Pandas #DataFrame
    CS지식
    반도체 공학
    LAN
    운영체제
    홉바이홉
    word 수식
    입출력관리
    전공 지식
    정리본
    멀티프로세스
    페이징 기법
    홉바이홉통신
    공백포함입력받기
    면접을 위한 cs전공지식 노트
    데이터전처리 #데이터분석 #딥러닝 #머신러닝 #Pandas #Numpy #Python
    파일입출력 #DataFrame불러오기
    보고서 수식
    면접을 위한 CS 전공지식 노트
    요약본
    MySQL
    os구조
    c io
    ios7계층
    ESG
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
코코도롱
8장. 객체 간 관계와 상속
상단으로

티스토리툴바