#include <iostream> using namespace std; class A{ public: virtual void call(int a=4) const { cout << "A" << a << endl; } }; class B:public A{ public: void call(int a=2) const { cout << "B" << a*a << endl; } }; class C:public B{ public: void call(int a=3) const { cout << "C" << a*a*a << endl; } }; void print(const A &a) { a.call(); } int main() { A a; print(a); B b; print(b); C c; print(c); int d; cin >> d; } 选中下面空白查看结果 这段代码输出了A4B16C64,说明了两个问题,一个是虚函数的默认形参,还有一个就是虚函数本身,虽然B没有声明virtual,但是基类定义了virtual,virtual就会一直传递下去。