c++多态性---虚函数

虚函数与纯虚函数的区别:

1、拥有虚函数的类可以声明对象,但拥有纯虚函数的类不可以声明对象(只能声明一个指针,并且不能给其分配内存),并且将这个类称为抽象类

特点:

1、虚函数是动态绑定的基础。

2、是非静态的成员函数。 在类的声明中,在函数原型之前写virtual。(不能声明为静态函数)

3、virtual 只用来说明类声明中的原型,不能用在函数实现时。

4、具有继承性,基类中声明了虚函数,派生类中无论是否说明,同原型函数都自动为虚函数。

5、本质:不是重载声明而是覆盖。

6、调用方式:通过基类指针或引用,执行时会 根据指针指向的对象的类,决定调用哪个函数。

虚函数范例:

#include <iostream>
using namespace std;class B0    //基类B0声明
{public:    //外部接口    
virtual void display() //虚成员函数     
{cout<<"B0::display()"<<endl;} };
class B1: public B0    //公有派生
{ public:       
void display()  
{  cout<<"B1::display()"<<endl;  }};
class D1: public B1    //公有派生
{ public:      
void display() {  cout<<"D1::display()"<<endl;  }};
void fun(B0 *ptr)    //普通函数
{    ptr->display();    }

int main()    //主函数
{    B0 b0,  *p;    //声明基类对象和指针
    B1 b1;    //声明派生类对象
    D1 d1;    //声明派生类对象
    p=&b0;
    fun(p);    //调用基类B0函数成员
    p=&b1;
    fun(p);    //调用派生类B1函数成员
    p=&d1;
    fun(p);    //调用派生类D1函数成员
}
结果:
B0::display()
B1::display()
D1::display()
原文地址:https://www.cnblogs.com/defen/p/5345070.html