C++ 中虚函数和纯虚函数的区别
c++server side programmingprogramming
下表显示了虚函数和纯虚函数的区别:
虚函数 | 纯虚函数 |
---|---|
虚函数在类中有定义。 | 纯虚函数没有定义。 |
声明:virtual函数名称(参数列表) {... .}; | 声明:virtual funct_name(parameter_list)=0; |
没有派生类的概念。 | 如果一个类至少包含一个纯虚函数,则将其声明为抽象。 |
如果需要,基类可以重写虚函数。 | 如果是纯虚函数,派生类必须重写纯虚函数。 |
虚函数
示例代码
#include <iostream> using namespace std; class B { public: virtual void s() //virtual function { cout<<" In Base \n"; } }; class D: public B { public: void s() { cout<<"In Derived \n"; } }; int main(void) { D d; // 类 D 的对象 B *b= &d;// 指向 d 的 B* 类型指针 b->s();// 打印"D::s() called" return 0; }
输出
在派生中
纯虚函数
示例代码
#include<iostream> using namespace std; class B { public: virtual void s() = 0; // 纯虚函数 }; class D:public B { public: void s() { cout << " 派生类中的虚函数\n"; } }; int main() { B *b; D dobj; // 类 D 的对象 b = &dobj;// 指向 dobj 的 B* 类型的指针 b->s();// 打印"D::s() called" }
输出
派生类中的虚函数