美文网首页
C++ - 多态与虚函数

C++ - 多态与虚函数

作者: Mitchell | 来源:发表于2016-01-25 16:12 被阅读176次

虚函数

  • 在类的定义中,前面有 virtural 关键字的成员函数被称为虚函数。
class base{
      virtual int get();
};
int base::get(){}
  • virtual 关键字只用在类定义里的函数声明中,写函数体时候不用。
  • 构造函数和静态成员函数不能是虚函数。

多态的变现形式一

  • 派生类的指针可以赋给基类指针。
  • 通过基类指针调用基类和派生类中的同名虚函数时:
    • 若该指针指向一个基类的对象,那么被调用时基类的虚函数;
    • 若该指针指向一个派生类的对象,那么被调动的是派生类的虚函数。
      这种机制就叫做“多态”
class CBase{
    public:
        virtual void SomeVirtualFunction(){}
};
class CDerived:public CBase{
    public:
        virtual void SomeVirtualFunction(){}
};
int main() {
    CDerived ODerived;
    CBase * p = & ODerived;
//调用哪个虚函数取决于p 指向哪种类型的对象,编译的时候是不会知道的,直到运行的时候才会知道。
    p-> SomeVirtualFunction();
    return ();
}

多态的表现形式二

  • 派生类的对象可以赋给基类引用
  • 通过基类引用调用基类和派生类中的同名虚函数时:
    • 若该引用引用的是一个基类的对象,那么被调用时基类的虚函数;
    • 若该引用引用的是一个派生类的额对象,那么被调用的是派生类的虚函数。
      这种机制也叫做“多态”。
class CBase{
    public:
        virtual void SomeVirtualFunction(){}
};
class CDerived:public CBase{
    public:
        virtaul void SomeVirtualFunction(){}
};
int main(){
     CDerived ODerived;
     CBase & r = ODerived;
//调用哪个虚函数取决于 r 引用哪中类型的对象
    r. SomeVirtualFunction();
    return 0;
}

多态的作用

在面向对象的程序设计中使用多态,能够增强程序的可扩充性,即程序需要修改或增加功能的时候,需要改动和增加的代码比较少。

相关文章

网友评论

      本文标题:C++ - 多态与虚函数

      本文链接:https://www.haomeiwen.com/subject/mxfdkttx.html