1 class base{ 2 public: 3 virtual void f(int n){ cout << "base"<<endl; } 4 }; 5 class Derived :public base{ 6 public: 7 void f(int n){ cout << "override" << endl; } 8 void f(double d) 9 { 10 cout << "overload" << endl;; 11 } 12 }; 13 int main() 14 { 15 Derived de; 16 base *b = &de; 17 b->f(2); 18 b->f(2.0); 19 Derived *d = &de; 20 d->f(2.0); 21 d->f(2); 22 }
输出为:override override overload override
如果子类没有重写基类的虚函数,输出为 base base overload overload
常见Java面试题 – 第三部分:重载(overloading)与重写(overriding)