C++中纯虚函数与虚函数的作用和区别
今天课堂上使用到了c++中的纯虚函数相关知识,而我却无耻的只有一个很模糊的概念,并不是十分的掌握,于是我仔细的复习了这一块。
首先纯虚函数是一种特殊的虚函数,在许多情况下,在基类中不能对虚函数给出有意义的实现,而把它声明为纯虚函数,它的实现留给该基类的派生类去做。这就是纯虚函数的作用。通俗来说,使用纯虚函数的类我们成为抽象类,该类不提供方法只提供接口,也可以很形象的理解为就是一个API。
纯虚函数的声明方法:vitual void A()=0;
虚函数则是为了实现多态,(多态性是允许你将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。简单的说,就是一句话:允许将子类类型的指针赋值给父类类型的指针。)
下面来看代码实现:首先定义两个类,A和B,B类是A类的子类,首先不使用虚函数。我们可以看到当我们使用A类定义的两个指针p1和p2分别指向A类和B类,按道理我们的输出应该是实现各自的print函数,但是结果却是都是实现的A类中的print函数。
然后我们在将父类中的函数设置为虚函数(子类可直接延续父类相应的成为虚函数),我们可以看到分别实现了两个print函数,这就是典型的多态实现。也就是虚函数的作用。