所在的位置: c++ >> 基本简介 >> C++纯虚函数详解

C++纯虚函数详解

C++纯虚函数详解

C++纯虚函数详解

有时在基类中将某一成员函数定为虚函数,并不是基类本身的要求,而是考虑到派生类的需要,在基类中预留了一个函数名,具体功能留给派生类根据需要去定义。

例如在前边的例12.1程序中,基类Point中没有求面积的area函数,由于“点”是没有面积的,也就是说,基类本身不需要这个函数,所以在例12.1程序中的Point类中没有定义area函数。

但是,在其直接派生类Circle和间接派生类Cylinder中都需要有area函数,而且这两个area函数的功能不同,一个是求圆面积,一个是求圆柱体表面积。

有的读者自然会想到,在这种情况下应当将area声明为虚函数。可以在基类Point中加一个area函数,并声明为虚函数:

virtualfloatarea()const{return0;}

其返回值为0,表示“点”是没有面积的。

其实,在基类中其实不使用这个函数,其返回值也是没有意义的。为简化,可以不写出这类无意义的函数体,只给出函数的原型,并在后面加上“=0”,如:

virtualfloatarea()const=0;//纯虚函数

这就将area声明为一个纯虚函数(purevirtualfunction)。

纯虚函数是在声明虚函数时被“初始化”为0的函数。声明纯虚函数的一般情势是

virtual函数类型函数名(参数表列)=0;

关于纯虚函数需要注意的几点:

纯虚函数没有函数体;

最后面的“=0”其实不表示函数返回值为0,它只起形式上的作用,告知编译系统“这是纯虚函数”;

这是一个声明语句,最后应有分号。

纯虚函数只有函数的名字而不具有函数的功能,不能被调用。它只是通知编译系统:“在这里声明一个虚函数,留待派生类中定义”。在派生类中对此函数提供定义后,它才能具有函数的功能,可被调用。

纯虚函数的作用是在基类中为其派生类保存一个函数的名字,以便派生类根据需要对它进行定义。

如果在基类中没有保存函数名字,则没法实现多态性。如果在一个类中声明了纯虚函数,而在其派生类中没有对该函数定义,则该虚函数在派生类中依然为纯虚函数。

C\C++语言程序设计

再多的文字也表达不完我们要学的东西,所以希望需要学习的朋友可以双

击原文链接,直接转入学习群交换,每天晚上8点开始语音解答,每天晚

上九点开始授课;遇到问题可以加我们的学习群;群里面找老司机给你们

解答C/C++JAVA疑问杂题要编译器要离线视频可以加群

群文件下载

点击下方“浏览原文”









































郑华国
白癜风医院



转载请注明:http://www.nydjfy.com/jbjj/705.html