当前位置: 首页 > news >正文

OOP特性 多态

OOP特性 多态

静态多态(编译时期)

函数重载、函数模板与类模板

函数重载

调用在编译阶段就编译好的函数

bool compare(int a, int b){}
bool compare(double a, double b){}
compare(2,3);
compare(2.0,3.0);
函数模板

在函数调用点,进行实参类型推导并从模板实例化函数(拷贝一份函数代码)

template<typename T>
bool compare(T a, T b){}
compare(2,3);
compare(2.0,3.0);

动态多态(运行 时期)

在继承结构中,基类指针(引用)指向派生类对象,通过基类指针(引用)调用同名覆盖方法(虚函数)。此时,基类指针(引用)指向那个派生类对象,就会调用那个派生类对象的同名覆盖方法,这称为多态。

举例
#include <iostream>
#include <typeinfo>
using namespace std;class Base {public:Base(int data) : ma_(data) {}virtual void show() { cout << "Base::show()" << endl; }void show(int) { cout << "Base::show(int)" << endl; }virtual ~Base() { cout << " ~Base()" << endl; }
protected:int ma_;
};class Drived : public Base {
public: Drived(int data):Base(data), mb_(data){}void show() { cout << "Drived::show()" << endl; }~Drived() { cout << "  ~Drived()" << endl; }
private:int mb_;
};int main()
{Base* p = new Drived(10);p->show(); 
}

上述代码中,基类指针指向派生类对象并调用同名覆盖函数,此时调用的函数为派生类的void show()函数,实现多态。


http://www.mrgr.cn/news/60305.html

相关文章:

  • 【传声器】电容式、动圈式
  • 时间序列预测(九)——门控循环单元网络(GRU)
  • 【C++入门】1-(C++)计算机程序设计基础
  • Android token JJWT
  • C#,自动驾驶,《OpenDRIVE 1.8.0规范摘要》及 1.8/1.7/1.6/1.5/1.4 各版本的C#解释器(Parser)源代码
  • 集群聊天服务器——逻辑梳理
  • c语言错题——#define对应的查找替换
  • 【JavaEE】【多线程】线程池
  • WebGIS开发之编辑功能(分割、融合、捕捉、追踪)
  • 2023年中国县域统计年鉴(县市卷+乡镇卷)(excel格式)
  • 声学气膜馆:品牌发布会的理想之选—轻空间
  • Labview通讯测试耗时
  • 支持向量机SVM简述
  • Spring Boot摄影工作室:构建Web版在线服务平台
  • jieba:智能文本处理的利器,结巴中文分词
  • 培育增长新动能,英搏尔数字化管理升级与创新的实践
  • Go语言编译详解
  • PHP员工管理系统小程序
  • 充电宝哪个牌子好?2024精选五款优质充电宝,入门避坑必看攻略!
  • 了解 SQL 查询执行顺序
  • 突破AI极限!GPT写的英语作文在全国大学生大赛中得分99!
  • 【论文阅读】jina-embeddings-v3: Multilingual Embeddings With Task LoRA
  • 代码随想录(十二)——图论
  • VLAN聚合的实验配置
  • 前端内存空间(堆、栈、队列、拷贝、垃圾回收)
  • 【React】React 18:新特性与重大更新解析