13

单选题 13 /40

求输出结果
#include <iostream>

using namespace std;
class A {
  public:
    virtual void print() {
        cout << "A::print()"
             << "\n";
    }
};

class B : public A {
  public:
    virtual void print() {
        cout << "B::print()"
             << "\n";
    }
};

class C : public A {
  public:
    virtual void print() {
        cout << "C::print()"
             << "\n";
    }
};

void print(A a) { a.print(); }
int main() {
    A a, *aa, *ab, *ac;
    B b;
    C c;
    aa = &a;
    ab = &b;
    ac = &c;
    a.print();
    b.print();
    c.print();
    aa->print();
    ab->print();
    ac->print();
    print(a);
    print(b);
    print(c);
}

参考答案

C::print() B::print() A::print() A::print() B::print() C::print() A::print() A::print() A::print()
A::print() B::print() C::print() A::print() B::print() C::print() A::print() A::print() A::print()
A::print() B::print() C::print() A::print() B::print() C::print() B::print() B::print() B::print()
C::print() B::print() A::print() A::print() B::print() C::print() C::print() C::print() C::print()