多态公有继承
一、多态:同一个方法在派生类和基类中的行为是不同的。
如果方法是通过引用或指针而不是对象调用的,若没有使用关键字virtual,程序将根据引用类型或指针类型选择方法。若使用了virtual,程序将根据引用或指针指向的对象的类型来选择方法。
如果ViewAcct()不是虚拟的,则:
Brass dom();
BrassPlus dot();
Brass &b1_ref=dom;
Brass &b2_ref=dot;
b1_ref.ViewAcct();//use Brass::ViewAcct()
b2_ref.ViewAcct();//use Brass::ViewAcct()
如果ViewAcct()是虚拟的,则:
Brass dom();
BrassPlus dot();
Brass &b1_ref=dom;
Brass &b2_ref=dot;
b1_ref.ViewAcct();//use Brass::ViewAcct()
b2_ref.ViewAcct();//use BrassPlus::ViewAcct()
经常在基类中将派生类会重新定义的方法声明为虚方法。方法在基类中被声明为虚拟的后,它在派生类中将自动成为虚方法。不过,在派生类声明中使用关键字virtual来指出哪些函数是虚函数也不失为一个好方法