虚函数
在类的定义中,virtual关键字的成员函数就是虚函数
class base {virtual int get();};int base::get() {}
virtual关键字只用于类定义中的函数声明中,写函数体的时候不用
-
多态表现形式一
派生类的指针可以赋值给基类指针
- 通过基类指针调用基类和派生类中的同名虚函数时:
- 若该指针指向一个基类对象,那么被调用的是基类的虚函数
- 若该指针指向一个派生类的对象,那么被调用的是派生类的虚函数
这种机制叫做“多态”
class CBase {public:virtual void vFunction() {}};class CDerived : public CBase {public:virtual void vFunction() {}};main() {CDerived od;CBase * p = & od;p->vFunction(); // 调用哪个虚函数取决于p指向的对象类型}
多态表现形式二
- 派生类的对象可以赋值给基类的引用
- 通过基类引用调用基类和派生类中的同名虚函数时:
- 若该引用引用的是一个基类对象,那么被调用的是基类的虚函数
- 若该引用引用的是一个派生类的对象,那么被调用的是派生类的虚函数
这种机制叫也做“多态”
class CBase {public:virtual void vFunction() {}};class CDerived : public CBase {public:virtual void vFunction() {}};main() {CDerived od;CBase & r = od;r.vFunction(); // 调用哪个虚函数取决于r引用的对象类型}
多态的示例



