虚析构函数和纯虚析构函数的区别是什么?什么是纯虚函数和抽象类?如何写C++的多态实现? |
您所在的位置:网站首页 › 虚函数的实现 › 虚析构函数和纯虚析构函数的区别是什么?什么是纯虚函数和抽象类?如何写C++的多态实现? |
咱们废话不多说,围绕主题进行讲解虚析构函数和纯虚析构函数的区别和如何写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 |