虚析构函数和纯虚析构函数的区别是什么?什么是纯虚函数和抽象类?如何写C++的多态实现?

您所在的位置:网站首页 虚函数的实现 虚析构函数和纯虚析构函数的区别是什么?什么是纯虚函数和抽象类?如何写C++的多态实现?

虚析构函数和纯虚析构函数的区别是什么?什么是纯虚函数和抽象类?如何写C++的多态实现?

2023-05-10 10:14| 来源: 网络整理| 查看: 265

咱们废话不多说,围绕主题进行讲解虚析构函数和纯虚析构函数的区别和如何写C++的多态实现,主要以基础入手为主,实现简单点的。

虚析构函数和纯虚析构函数区别在哪里?作为两点介绍:

1、虚析构函数:

主要作用是为了来解决基类指针指向派生类对象,并用基类指针释放派生类对象。也就是说父类的虚析构函数,会调用派生类的析构函数。有虚析构函数的类是抽象类,不能实例化对象,不需要在类外实现;

2、纯虚析构函数:

有纯虚析构函数的类它是抽象类,不能实例化对象,而且要在类外实现;

既然我们要实现一个简单的多态例子,首先也需要了解知道什么是多态?

既然我们要实现一个简单的多态例子,首先也需要了解知道什么是多态?简而言之,可以这么理解为“同一个操作作用于不同的对象,可以有不同的解释,会产生不同的效果,这就是多态。”

什么是纯虚函数?

class Maker { public: // 为纯虚函数 virtual int getsize(int a, int b) = 0; };

什么是抽象类?

有纯虚函数的类叫抽象类,不能实例化对象,同时如果是虚函数必须要实现,如果不实现,编译器就会报错。

为什么要用多态?多态有什么用处?

在类中使用多态一个可以解决项目中的紧耦合问题,提供程序的可扩展性;二是应用程序不必再为每一个子类的功能调用编写代码,只需要对抽象的父类进行处理就好。

实现多态需要满足哪几个条件?

实现多态一般满足这3个条件即可,要有继承,重写父类的虚函数,父类指针指向子类对象。

以上,我们把所有需要的条件和知识点进行梳理了,现在,我们以代码的形式写一个例子,方便更好理解和应用所提到的知识点。就以学校类和增加学科作为例子。代码如下所示:

#define _CRT_SECURE_NO_WARNINGS #include #include using namespace std; // 学校类 class School { public: virtual void study() = 0; // 父类的纯虚函数 }; // 1.有继承 class Math :public School { public: Math(string name) { this->name = name; } // 2.重写父类的虚函数 virtual void study() { cout


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3