C++学习之路多态——纯虚函数和抽象类

在多态中,父类中的虚函数毫无意义,主要是调用子类中的内容,因此可以将其写为纯虚函数

纯虚函数的语法:virtual 返回值类型 函数名 (参数列表)=0;

当类中有了纯虚函数,这个类也称为抽象类

抽象类对象:

  • 无法实例化对象
  • 子类必须重写抽象类的纯虚函数,否则也属于纯虚函数

多态使用时,如果子类中有属性开辟到堆区,那么父类指针在释放时无法调用到子类的析构代码

解决方式:将父类中的析构函数改为虚析构或者纯虚析构 

虚析构和纯虚析构的共性:

  • 可以解决父类对象释放子类对象;
  • 都需要有具体的函数实现;

虚析构和纯虚析构的区别:

如果时纯虚析构,该类属于抽象类,无法实例化对象;

虚析构语法:

vartual ~类名(){}:

纯虚析构语法:

 vartual ~类名()=0;

类名::~类名(){}

你可能感兴趣的:(c++)