纯虚函数和抽象类
在c++多态中,父类的作用就是提供一个虚函数类方便进行多态,那么实际上父类的用处几乎等于没有,所以c++提供了纯虚函数和抽象类
纯虚函数的语法
virtual 返回值类型 函数名(参数列表)=0;
只要在类中创建出纯虚函数,那么这个类就会变成抽象类,无法实例化对象,也就是无法创建对象,
同时如果他的子类没有重写父类的虚函数,那么子类也会变成抽象类。
抽象类相当于是一个接口
这里来看看代码
代码中提供了实现多态的两种方式
父类的引用或指针指向子类对象
#include<iostream>
#include<string>
using namespace std;
//纯虚函数和抽象类
class Base
{
public:
//在父类中创建纯虚函数后,父类就变成抽象类,无法实例化对象
//子类必须重写父类中的纯虚函数,否则也会被当做抽象类
virtual void fun() = 0;//纯虚函数的语法
};
class Son :public Base
{
public:
void fun()//父类纯虚函数的重写
{
cout << "func()函数的调用" << endl;
}
};
void test01()//引用方式
{
Son son;
Base& base = son;
cout << "父类引用子类对象" << endl;
base.fun();
}
void test02()//指针方式
{
Base* base = new Son;
cout << "父类指针指向子类对象" << endl;
base->fun();
delete base;//销毁在堆区创建的内存空间
}
int main()
{
test01();
cout << endl;
test02();
system("pause");
return 0;
}