상속 및 재정의

// Week01-OOP.cpp : 이 파일에는 'main' 함수가 포함됩니다. 거기서 프로그램 실행이 시작되고 종료됩니다.
//
#include <iostream>

class President {
public:
    virtual void printCar() {
        std::cout << "Maybach S580" << std::endl;
    }
};

class Secretary {
    President *top = NULL;
public:
    Secretary(President* p) { top = p; }
    void prepareCar() {
        std::cout << "차를 대기시켜 놓았습니다." << std::endl;
        top->printCar();
    }
};

int main() {
    President father;
    Secretary secretary(&father);
    
    secretary.prepareCar();

    return 0;
}
// Week01-OOP.cpp : 이 파일에는 'main' 함수가 포함됩니다. 거기서 프로그램 실행이 시작되고 종료됩니다.
//
#include <iostream>

class President {
public:
    virtual void printCar() {
        std::cout << "Maybach S580" << std::endl;
    }
};

class Secretary {
    President* top = NULL;
public:
    Secretary(President* p) { top = p; }
    void prepareCar() {
        std::cout << "차를 대기시켜 놓았습니다." << std::endl;
        top->printCar();
    }
};

class Derived : public President {
public:
    void printCar() override {
        std::cout << "Genesis G80" << std::endl;
    }
};

int main() {
    //President father;
    //Secretary secretary(&father);
    Derived me;
    Secretary secretary(&me);

    secretary.prepareCar();

    return 0;
}