关于虚函数
If the array member points to a Brass object,Brass::ViewAcct() is invoked; if the array member points to a BrassPlus object,BrassPlus::ViewAcct() is invoked. If Brass::ViewAcct() were been declared as virtual,Brass:ViewAcct() would be invoked in all cases.上面是c++ primer plus的原文
如果数组成员指向的是 Brass 对象,则调用 Brass::ViewAcct();如果指向的是 BrassPlus对象,则调用BrassPlus::ViewAcct().如果 Brass::ViewAcct()被声明为虚拟的,则在任何情况下都将被调用Brass::ViewAcct().上面是c++ primer plus中文版对应的内容
#include <iostream>using namespace std;class A{public: void f1() { cout << "A---f1" << endl; } virtual void f2() { cout << "A---f2" << endl; }};class B:A{public: void f1() { cout << "B---f1" << endl; } void f2() { cout << "B---f2" << endl; }};void main(){ A a; B b; a.f1(); a.f2(); b.f1(); b.f2(); system("pause");}