纯虚函数可以有函数体,但是有了函数体之后还是纯虚函数,类依旧是抽象类,不能实例化。
如下代码:
#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()