纯虚函数是一个在基类中说明的虚函数,在基类中没有定义,要求任何派生类都定义自己的版本
纯虚函数为各派生类提供一个公共界面(接口的封装和设计、软件的模块功能划分)
纯虚函数说明形式:
virtual 类型 函数名(参数表)=0;
一个具有纯虚函数的基类称为抽象类:
1,含有纯虚函数的类,称为抽象基类,不可实列化。即不能创建对象,存在 的意义
就是被继承,提供族类的公共接口。
2,纯虚函数只有声明,没有实现,被“初始化”为 0。
3,如果一个类中声明了纯虚函数,而在派生类中没有对该函数定义,则该虚函数在
派生类中仍然为纯虚函数,派生类仍然为纯虚基类。
以下编写一个抽象类实现功能:
class Animal
{
public:
Animal()
{
cout << "Animal::Animal()" << endl;
}
~Animal()
{
cout << "Animal::~Animal()" << endl;
}
virtual void voice() = 0;
};
class Dog :public Animal
{
public:
Dog() {
cout << "Dog::Dog()" << endl;
}
~Dog() {
cout << "Dog::~Dog()" << endl;
}
void voice() {
cout << "wang wang" << endl;
}
};
class Cat :public Animal
{
public:
Cat() {
cout << "Cat::Cat()" << endl;
}
~Cat() {
cout << "Cat::~Cat()" << endl;
}
void voice() {
cout << "miao miao " << endl;
}
};
Void main(){
Animal *pa = new Dog;
pa->voice();
delete pa;
cout << "---------------" << endl;
pa = new Cat;
pa->voice();
delete pa;
}
运行结果: