在多态中,通常父类中虚函数的实现是毫无意义的,主要都是调用子类重写父类的函数内容,因此可以将虚函数改为纯虚函数。当类有了纯虚函数,这个类也称为抽象类。
纯虚函数的目的:通过子类重写抽象类的纯虚函数,实现多态技术。
抽象类的特点:
1、无法实例化对象。
2、子类必须重写抽象类中的纯虚函数,否则也属于抽象类。
示例:
#include <iostream>
#include <Windows.h>
#include <string>
using namespace std;
// 纯虚函数和抽象类
class Base
{
public:
// 纯虚函数
virtual void func() = 0;
};
class Son : public Base
{
public:
// 子类没有重写抽象类的纯虚函数,那么子类也是抽象类
};
int main(void)
{
// 1、含有纯虚函数的类称为抽象类,抽象类无法实例化对象
Base b; // 报错:抽象类无法实例化对象
new Base; // 报错:无法使用抽象类实例化对象
// 2、抽象类的子类,必须重写父类中的纯虚函数,否则也属于抽象类
Son son; // 报错:抽象类无法实例化对象
system("pause");
return 0;
}
纯虚函数和抽象类的使用:
#include <iostream>
#include <Windows.h>
#include <string>
using namespace std;
// 纯虚函数和抽象类
class Base
{
public:
// 纯虚函数
virtual void func() = 0;
};
class Son : public Base
{
public:
// 重写抽象类的纯虚函数
virtual void func()
{
cout << "func调用:Son重写Base的纯虚函数" << endl;
}
};
int main(void)
{
//多态:父类引用或指针接收子类对象
Base* base = new Son;
base->func();
system("pause");
return 0;
}
运行截图: