现在的位置: 首页 > 综合 > 正文

虚函数与纯函数的区别

2013年08月02日 ⁄ 综合 ⁄ 共 785字 ⁄ 字号 评论关闭

相同点:

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();//必须实现父类的纯虚函数!!!

}

抱歉!评论已关闭.