class 파생클래스명: 접근제어지시자 부모클래스명
// 기본 클래스 혹은 부모 클래스
class CMyData {
};
// 파생 클래스 혹은 자식 클래스
class CMyDataEx: public CMyData {
};
파생 클래스의 인스턴스가 생성될 때 기본 클래스의 생성자도 호출된다.
파생 클래스는 기본 클래스의 멤버에 접근할 수 있다. (private 제외)
파생 클래스의 인스턴스를 통해 기본 클래스 메서드를 호출할 수 있다.
상속 관계에서 파생 클래스의 생성자는 먼저 호출되지만 실행은 나중에 된다.
private으로 선언된 멤버는 파생 클래스에서 접근이 불가능하다.protected으로 선언된 멤버는 파생 클래스에서만 접근이 가능하며, 외부에서는 접근이 불가능하다.b.CMyData::SetData(15))을 통해 직접 상위 기본 클래스의 메서드를 호출할 수 있다.int main(int argc, char* argv[]) {
    CMyDataEx a;
    CMyData &rData = a; // 참조자를 이용한 참조
    CMyData *pData = new CMyDataEx; // 포인터를 이용한 참조
    rData.SetData(15);
    pData->SetData(11);
    cout << rData.GetData() << endl;
    delete pData;
    return 0;
}
CMyDataEx::SetData가 아닌 CMyData::SetData가 호출된다.pData를 delete 하더라도 CMyDataEx의 소멸자가 호출되지 않으므로, 메모리 누수 문제가 발생한다.A, B, C에 대하여 A는 B의 기본이고 B는 C의 기본 클래스인 상속 관계라 하자.C 클래스의 인스턴스를 선언하면 생성자의 호출 순서는 C, B, A이다.A, B, C이다.C 클래스의 인스턴스가 소멸하면 소멸자가 A, B, C 순서대로 호출 및 실행된다.class CMyDataEx: public CMyData {
public:
    using CMyData::CMyData;
}