在虚函数的声明的参数列表之后加上“=0”就将函数变成了纯虚函数
虚函数:在虚函数的声明的参数列表之后加上“=0”就将函数变成了纯虚函数,如:
[cpp]
class Base
{
virtual void function()=0;
}
class Base
{
virtual void function()=0;
}我们不需要为纯虚函数Base::function()提供任何定义,那些声明了纯虚函数的类就是抽象类。任何试图创建一个抽象类对象的操作都会导致编译器错误。
如果一个类派生子Base并且重写了Base::function()函数,它就成为了具体的类了。
[cpp]
class Derived :public Basae
{
void function();
}
class Derived :public Basae
{
void function();
}
我们通常将抽象类用作接口声明,这时我们不需要为该接口声明一个完整的实现,该接口描述了所有派生自该类的对象都应该支持的操作;派生类必须实现这些抽象操作。
[cpp]
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();
}
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;
补充:软件开发 , C++ ,