多态
文章平均质量分 51
多态
linuxcpp_
这个作者很懒,什么都没留下…
展开
-
多态(6)--扩展(2)[重载、重写、重定义]
多态--重载、重写、重定义1 重载2 重写3 重定义1 重载同一个作用域下,函数名称相同,参数个数、顺序、类型不同。void print(){}void Print(int a){}void Print(double a){}2 重写子类重写父类中的虚函数,函数返回值、函数名、形参列表完全一致称为重写。class Parent{ // 父类中的虚函数 virtual void print() { }};class Son:public Parent{ // 重写原创 2021-01-18 23:25:11 · 80 阅读 · 0 评论 -
多态(5)--扩展(1)[向上向下类型转换]
多态--向上向下类型转换如果发生多态,那么转换永远都是安全的。因为多态的其中一个条件是:父类指针指向子类,即向下类型转换;// 父类指针指向子类Parent *pP = new Son;原创 2021-01-18 23:15:51 · 95 阅读 · 0 评论 -
多态(4)--虚析构和纯虚析构
多态--虚析构和纯虚析构1 为什么要使用虚析构(纯虚析构)2 虚析构3 纯虚析构1 为什么要使用虚析构(纯虚析构)下面我们通过一个例子了解一下。#include <iostream>#include <string.h>using namespace std;// 父类class Animal{public: Animal() { cout << "Animal类的构造" << endl; }原创 2021-01-18 22:21:39 · 121 阅读 · 0 评论 -
多态(3)--纯虚函数和抽象类
多态--纯虚函数和抽象类1 基本概念1.1 纯虚函数1.2 抽象类2 纯虚函数的语法3 示例1 基本概念1.1 纯虚函数纯虚函数是一个在基类中说明的虚函数,在基类中没有定义,要求任何派生类都定义自己的版本。虚函数为个派生类提供一个公共界面(接口的封装和设计、软件的模块功能划分) 1.2 抽象类一个具有纯虚函数的基类称为抽象类,抽象类不能实例化。 抽象类的子类必须要重写父类中的纯虚函数,否则也属于抽象类。2 纯虚函数的语法virtual 类型 函数名(形参) = 0;3 示原创 2021-01-18 21:31:41 · 141 阅读 · 0 评论 -
多态(2)--多态的实现原理
多态--多态的实现原理1 vftable(虚函数表)和vfptr指针(虚函数指针)1 vftable(虚函数表)和vfptr指针(虚函数指针)当类中声明虚函数时,编译器会在类中生成一个虚函数表; 虚函数表是一个存储类成员函数指针的数据结构; 虚函数表是由编译器自动生成与维护的; virtual成员函数会被编译器放入虚函数表中; 存在虚函数时,每个对象中都有一个指向虚函数表的指针(vfptr指针)。对象在创建的时,由编译器对vfptr指针进行初始化只有当对象的构造完全结束原创 2021-01-17 11:35:37 · 94 阅读 · 0 评论 -
多态(1)--多态的基本概念
多态--多态的基本概念1 多态的基本概念1.1 什么是多态1.2 赋值兼容(多态实现的前提) ★★1.3 面向对象的新需求1.4 解决方法 ★★1.5 多态工程的意义1.6 多态成立的条件 ★★1.5 静态联编和动态联编 ★1 多态的基本概念1.1 什么是多态如果有几个上似而不完全相同的对象,有时人们要求在向它们发出同一个消息时, 它们的反应各不相同,分别执行不同的操作。这种情况就是多态现象。C++中所谓的多态(polymorphism)是指,由继承而产生的相关的不同的类,其对象 对同一消息会原创 2021-01-17 11:04:20 · 631 阅读 · 0 评论