传递多态对象

题目描述

程序填空输出指定结果

关于输入

关于输出

见样例输出

参考答案

#include <iostream>

class A {
public:
    void Fun() const {
        std::cout << "A::Fun" << std::endl;
    }
    virtual void Do() const {
        std::cout << "A::Do" << std::endl;
    }
};

class B : public A {
public:
    virtual void Do() const {
        std::cout << "B::Do" << std::endl;
    }
};

class C : public B {
public:
    void Do() const {
        std::cout << "C::Do" << std::endl;
    }
    void Fun() const {
        std::cout << "C::Fun" << std::endl;
    }
};

void Call(
    const A& a
) {
    a.Fun();
    a.Do();
}

int main() {
    A a;
    const C c{};
    Call(a);
    Call(c);
}