기본 클래스 - 부모 클래스 - 상속해주는
파생 클래스 - 자식 클래스 - 상속받는
class 파생클래스명 접근지정 기본클래스명
class Student : public Person {}
class StudentWorker : public Student {}
StudentWorker는 Student물려받고, Student는 Person물려받음
파생 클래스의 포인터가 기본 클래스 포인터에 치환됨
ColorPoint cp;
ColorPoint *pDer = &cp;
Point* pBase = pDer; //업캐스팅
기본 클래스의 포인터가 파생 클래스의 포인터에 치환됨
ColorPoint cp;
ColorPoint *pDer = &cp;
Point* pBase = pDer; //업캐스팅
pDer = (ColorPoint*)pBase; //다운캐스팅
파생클래스 객체 생성시 : 기본 클래스 생성자 실행 -> 파생 클래스 생성자 실행
소멸될때 : 파생클래스 -> 기본 클래스 순서
파생클래스 생성자에서 기본클래스 기본생성자 묵시적 호출됨
기본 클래스에서 기본 생성자가 없는 경우 컴파일 오류 발생
매개 변수 가진 파생 클래스 생성자는 묵시적으로 기본 클래스 기본 생성자 호출
파생클래스 생성자에서 명시적으로 기본클래스 인수있는 생성자 선택
B(int x) : A(x+3) {}
public - 기본 클래스 멤버 속성 그대로
private - private로
protected - protected으로
class MusicPhone : public MP3, public MobilePhone{}
class BaseIO{};
calss In : public BaseIO{};
class Out : public BaseIO{};
clas InOut : public In, public Out{};
class In : virtual public BaseIO{}