多态公有继承
多态:同一个方法在派生类和基类中的行为是不同的,方法的行为取决于调用该方法的对象,即同一方法的行为随上下文而异。
实现多态公有继承的两种重要机制:
1.在派生类中重新定义基类方法
2.使用虚函数
virtual虚函数的作用:
如果方法是通过引用或者指针而不是对象调用,他将确定使用哪一种方法。
如果没有使用关键字virtual,程序将根据引用类型或者指针类型选择方法;如果使用了关键字virtual,程序将根据引用或者指针指向的对象的类型选择方法;
//class Brassplus :: public Brass,ViewAcct()非虚函数
Brass dom("Dominic Banker",11224,4183.45);
Brassplus dot("Dorothy Banker",12118,2592.00);
Brass &b1_ref = dom;
Brass &b2_ref = dot;
b1_ref.ViewAcct();//use Brass::ViewAcct
b2_ref.ViewAcct();//use Brass::ViewAcct
//class Brassplus :: public Brass,ViewAcct()虚函数
Brass dom("Dominic Banker",11224,4183.45);
Brassplus dot("Dorothy Banker",12118,2592.00);
Brass &b1_ref = dom;
Brass &b2_ref = dot;
b1_ref.ViewAcct();//use Brass::ViewAcct
b2_ref.ViewAcct();//use Brassplus::ViewAcct