首页 > 代码库 > 在虚函数的声明的参数列表后加上“=0”就将函数变成了纯虚函数

在虚函数的声明的参数列表后加上“=0”就将函数变成了纯虚函数

在虚函数的声明的参数列表后加上“=0”就将函数变成了纯虚函数
class Base
{
virtual void function()=0;
}
我们不需要为纯虚函数Base::function()提供任何定义,那些声明了纯虚函数的类就是抽象类。任何试图创建一个抽象类对象的操作都会导致编译器错误。
如果一个派生Base并且重写了Base::function()函数,它就成为了具体的类。
class Derived :public Basae
{
void function();
}
通常将抽象类用作接口声明,这时不需要为该接口声明一个完整的实现,该接口描述了所有派生自该类的对象都应该支持的操作,派生类必须实现这些抽象操作。
class Base
{
public:
virtual void print()=0;
};
class Derived :public Base
{
public:
virtual void print()
{
cout<<"Derived::Derived()\n";
}
~Derived()
{
print();
}
};
int main()
{
Derived D;
Base* ptr=&D;
D.print();
}
运行结果:
Derived::Derived()

Derived::Derived()


第一个Derived::Derived()是通过D直接调用print()时所产生的输出,第二个是在程序结束时调用~Derived()时产生的输出。

虽然我们不可以直接创建抽象类的对象了,但是仍然可以使用指向Base的指针和引用。

比如: Base* ptr= &D;