纯虚函数:
纯虚函数是指被标明为不具体实现的虚拟成员函数。
它用于这样的情况:定义一个基类时,会遇到无法定义基类中虚函数的具体实现,其实现依赖于不同的派生类。定义纯虚函数的一般格式为:
virtual 返回类型 函数名(参数表)=0;
含有纯虚函数的基类是不能用来定义对象的。
纯虚函数没有实现部分,不能产生对象,所以含有纯虚函数的类是抽象类。
抽象类不能定义对象,但可以定义指针和引用;
<span style="font-size:18px;">//抽象类,提供一个公共父类,利于提高公共接口
class A
{
public:
virtual void Eat() = 0;
virtual void Sleep() = 0;
};
class P : public A
{
public:
//必须将抽象类的所有纯虚函数实现,不然,仍然是抽象类
void Eat()
{
cout<<"P Eat()"<<endl;
}
void Sleep()
{
cout<<"P Eat()"<<endl;
}
};
class Dog : public A
{
public:
void Eat()
{
cout<<"Dog Eat()"<<endl;
}
void Sleep()
{
cout<<"Dog Eat()"<<endl;
}
};
//抽象类提供的公共接口
void fun(A *pa)
{
pa->Eat();
pa->Sleep();
}
int main()
{
P p;
Dog dog;
fun(&p);
fun(&dog);
return 0;
}
</span>
定义纯虚函数必须注意:
1.定义纯虚函数时,不需要定义虚函数的实现部分。即使是定义了函数体也不执行,
2.“=0”表明程序员将不定义该函数,函数声明是为派生类保留一个位置。“=0”本质上是将指向函数体的指针定NULL。
3.在派生类中必须有重新定义所有的纯虚函数的函数体,这样的派生类才能用来定义对象。