虚函数与纯函数的区别

相同点:

1、都可以在子类中重新实现,以便实现多态。

 

不同点:

1、虚函数在父类中必须定义(一般是空定义),所以子类可以实现虚函数,也可以不实现,如果实现虚函数了,即覆盖了父类的虚函数,同时也继承了父类的虚函数,使用父类的虚函数要指明父类的对象!

2、纯虚函数在父类中只是声明,不可以实现,用于统一接口,所以所有的子类必须实现父类的纯虚函数。

3、带有纯虚函数的父类(也叫作抽象类),不可以new 对象,但可以声明对象,声明对象用来实现多态。

4、带有虚函数,但没有纯虚函数的父类,可以new对象,当然也可以声明对象。

 

示例:

 

1、虚函数:

class A

{

public:

virtual void hello(){} //虚函数,空定义,意味着在子类重新实现,如果不是空定义,意味着子类也继承该方法,可以用在子类中。虚函数在子类重新实现后,本身还是虚函数。

}

 

class B:public class A

{

public:

void hello(){...............}// 重新实现class A的虚函数 hello函数,class B的hello函数还是虚函数!!!

}

 

class C:public A

{

public:

void world();//没有重现实现class A中的虚函数hello函数,但也继承了 class A中的函数hello,但是由于其是空定义,所以对于class B来说,没有意义,如果不为空,class B就可以利用class A的hello函数。

 

}

 

2、纯虚函数

class D

{

public:

virtual void hello() = 0;//注意要加上 = 0,这是纯虚函数的标志!!

}

 

class E:public D

{

 

public:

void hello();//必须实现父类的纯虚函数!!!

}

 

class F:class D

{

public :

void hello();//必须实现父类的纯虚函数!!!

}

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值