纯虚函数可以有函数体,但是有了函数体之后还是纯虚函数,类依旧是抽象类,不能实例化。
如下代码:
#include<iostream>using namespace std;class test{public: test(); test(int a); virtual ~test(); virtual int get();private: int a;};test::test(){ a = 0;}test::test(int a):a(a){}test::~test(){}int test::get(){ return a;}int main(){ test t1; cout<<t1.get()<<endl; return 0;}上述代码可以通过编译正常运行,但是将virtual int get();改成virtual int get() = 0;之后再编译,就会出现如下错误:
virtual.cpp: In function ‘int main()’:
virtual.cpp:38:10: error: cannot declare variable ‘t1’ to be of abstract type ‘test’
test t1;
^~
virtual.cpp:5:7: note: because the following virtual functions are pure within ‘test’:
class test
^~~~
virtual.cpp:31:5: note: virtual int test::get()
int test::get()