#include <iostream>
using namespace std;
class a{
public:
virtual void f()=0;
};
void a::f(){//纯虚函数也可以被定义(虽然通常不这么做),只不过必须放在类的外部
cout<<"class a";
}
class b:public a{
public:
void f() override{
cout<<"class b";
}
};
int main()
{
a a1;//出错,抽象基类(或抽象基类派生的并且没有重写纯虚函数的派生类)不能定义对象(不能实例化),
//就算抽象基类定义了纯虚函数,也不行!
b b1;//正确,抽象基类的派生类必须重写纯虚函数,才能定义对象
a* a2=&b1;//正确
b1.f();
cout<<endl;
a2->f();
system("pause");
return 0;
}
//定义纯虚函数的目的在于,使派生类仅仅只是继承函数的接口。
//纯虚函数的意义,让所有的类对象(主要是派生类对象)都可以执行纯虚函数的动作,但类无法为纯虚函数提供一个合理的缺省实现。
//所以类纯虚函数的声明就是在告诉子类的设计者,“你必须提供一个纯虚函数的实现,但我不知道你会怎样实现它”。
纯虚函数小记
最新推荐文章于 2022-03-30 15:04:34 发布