相同点:
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();//必须实现父类的纯虚函数!!!
}
本文详细解析了虚函数和纯虚函数的概念及其在面向对象编程中的应用。阐述了两者之间的相同点与不同点,并通过示例代码进行了具体说明。
5985

被折叠的 条评论
为什么被折叠?



