본 문서는 인프런의 [하루 10분|C++] 누구나 쉽게 배우는 C++ 프로그래밍 입문 강의를 공부하며 작성한 개인 노트입니다.
코드는 재활용이 가능해야 한다
상속
1. 기존의 클래스에 새로운 기능 추가 가능
2. 클래스가 나타내고 있는 데이터에 다른 것을 더 추가할 수 있음
3. 클래스 메서드가 동작하는 방식 변경 가능
(time.h) Time 클래스의 파생클래스 NewTime 클래스
class NewTime : public Time {
private:
int day;
public:
NewTime();
NewTime(int, int, int);
};
func.cpp
NewTime::NewTime() : Time() {
day = 0;
// min & hr는 Time()에서 이미 정의됨
}
NewTime::NewTime(int, int, int) : Time(h, m) {
day = d;
// 첫 두 매개변수는 h, m으로 결정됨
}
: Time()
과 : Time(h, m)
을 통해서 각 NewTime 메서드를 호출할 때 Time 객체가 먼저 생성되어 매개변수로 NewTime 메서드에 전달됨기초 클래스 메서드를 상속 클래스에 다시 정의
기초 클래스의 메서드에 virtual
키워드 추가
(ex) virtual void show();
#include<iostream>
#include"time.h"
using namespace std;
const int MAX = 3;
int main() {
Time* times[MAX]; // 포인터의 배열
int day;
int hours;
int mins;
}
Time* times
배열에서 원소에 delete
함수를 사용하면 무조건 Time 클래스의 메서드가 사용될 것임delete
함수도 virtual
처리해줘야 함