本文主要是介绍C++多态虚函数/纯虚函数demo(三十二),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1.代码示例
#include <iostream>
using namespace std;class A //A是一个抽象类,不能new A直接实例化.
{
public:virtual void out1()=0; //纯虚函数:由子类实现virtual ~A(){};virtual void out2() //虚函数:默认实现{cout<<"A(out2)"<<endl;}void out3() //普通函数:强制实现{cout<<"A(out3)"<<endl;}
};class B:public A
{
public://virtual ~B(){};void out1()//纯虚函数:由子类实现{cout<<"B(out1)"<<endl;} void out2()//虚函数:默认实现{cout<<"B(out2)"<<endl;} void out3(){cout<<"B(out3)"<<endl;}
};int main()
{/*多态:1.父类指针指向子类对象(不可倒过来.)2.虚函数与纯虚函数确实调用子类的重写(覆盖)的函数,普通函数还是调用父类函数.*/A *ab = new B();ab->out1();//子类实现父类的纯虚函数,此时调用子类out1()ab->out2();//子类重写(覆盖)父类的虚函数,此时调用子类out2()ab->out3();//父类是普通函数,没有多态功能.cout<<"************************"<<endl;B *bb = new B();bb->out1();bb->out2();bb->out3();cout<<"************************"<<endl;B cc;cc.out1();cc.out2();cc.out3();cout<<"************************"<<endl;//A是一个抽象类,不能new A直接实例化.错误写法
/*A dd = new A;dd.out1();dd.out2();dd.out3();
*/delete ab;delete bb;return 0;
}
这篇关于C++多态虚函数/纯虚函数demo(三十二)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!