class A {
public:
    virtual void Print() = 0;
};
class B : public A {
public:
    virtual void Print() override {
        std::cout << "B" << std::endl;
    }
    void _C() {
        std::cout << __FUNCTION__ << "CALL" << std::endl;
    }
};
class C : public A {
public:
    virtual void Print() override {
        std::cout << "C" << std::endl;
    }
    void _C() {
        std::cout << __FUNCTION__ << " CALL"<< std::endl;
    }
};
int main() {

    A * a = new C();
    if ( (dynamic_cast<C*>(a)) != nullptr)
    {
        C * c = (C*)a;
        c->_C();
    }
    delete a;
    return 0;
}


dynamic_cast쓰면 되는데, 이 거 쓰려면 부모클래스에 가상함수가 있고, 자식클래스가 그 가상함수를 재정의해야 할 거임.

근데 이렇게 할 바에 그냥 부모 클래스에 함수 하나 가상함수로 두고 각 클래스 별로 자식클래스에서 재정의해서 호출하는 게 낫지...