多态公有继承

一、多态:同一个方法在派生类和基类中的行为是不同的。

如果方法是通过引用或指针而不是对象调用的,若没有使用关键字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来指出哪些函数是虚函数也不失为一个好方法

 

posted @ 2013-04-01 20:45  小叫花子  阅读(166)  评论(0编辑  收藏  举报