首页 > 其他分享 ><七>理解多态

<七>理解多态

时间:2022-11-28 12:46:43浏览次数:37  
标签:compare int double 基类 多态 理解 派生类

理解多态
多种多样的形态(静态多态,动态多态)
静态多态(编译时期)

1:函数重载

bool comparet(int ,int); bool compare(double,double);

compare(100,100)->compare_int_int();
compare(1.0,2.0)->comapre_double_double();

2:模板

template<typename T>
bool compare(T a,T b){
    return a>b;
}

compare<int>(20,10); =>int 实例化compare(int x, int y); 发生在编译时期
compare<double>(100.0,50.0); 实例化compare(double x,double y);发生在编译器

动态多态(运行时期)
在继承结构中,基类指针(引用),指向派生类对象,通过该指针(引用)调用同名覆盖方法(虚函数)
基类指针指向哪个派生类对象,就会调用哪个派生类对象的同名覆盖方法,称为多态
pBase->show()多态底层是通过动态绑定来实现的 pbase->访问谁的vfptf->继续访问vftable->拿到最终的虚函数地址->完成调用

继承的好处?
1:可以做代码的复用
2:在基类中提供统一的虚函数接口,让派生类进行重写,然后就可以使用多态.

标签:compare,int,double,基类,多态,理解,派生类
From: https://www.cnblogs.com/erichome/p/16931522.html

相关文章

  • Java多线程中锁的理解与使用
    1.简介锁作为​​并发​​共享数据,保证一致性的工具,在JAVA平台有多种实现(如synchronized和ReentrantLock等)。2.Java锁的种类公平锁/非公平锁可重入锁独享锁/共享锁互......
  • 20221128 源码理解 spring-boot-starter-web【归档】
    版本信息<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>版本2.6.7目录Ser......
  • 实验五 继承和多态
    实验任务4程序源码pets.hpp#pragmaonce#include<iostream>#include<string>usingnamespacestd;classMachinePets{public:MachinePets(conststring&s)......
  • 实验五 继承和多态
    task4代码://pets.hpp#pragmaonce#include<iostream>usingnamespacestd;classMachinePets{public: MachinePets(conststrings):nickname(s){} virtuals......
  • 实验五 继承和多态
    task4pets.hpp1#include<iostream>2usingnamespacestd;34classMachinePets{5public:6MachinePets(conststrings):nickname{s}{}7......
  • 实验五 继承和多态
    实验四pets.hpp1#pragmaonce2#include<iostream>3#include<string>4usingnamespacestd;56classMachinePets{7public:8MachineP......
  • 实验5 继承和多态
    一、实验任务41.源代码:pets.hpp#pragmaonce#include<iostream>usingnamespacestd;classMachinePets{public:MachinePets(conststrings):nickname{s......
  • 实验5 继承和多态
    #pragmaonce#include<iostream>usingnamespacestd;classMachinePets{public:MachinePets(conststrings):nickname{s}{}stringget_nickname()......
  • 实验五 继承和多态
    实验任务4pets.hpp1#pragmaonce2#include<iostream>3#include<string>45usingnamespacestd;6usingstd::string;7classMachinePets{8publi......
  • 遍历学生类的属性,易理解版
    这是输出类的代码1.创建一个学生类的集合对象ArrayList<学生类01>AA=newArrayList<>();2.创建一个可以录入键盘数据的对象ScannerBB=newScanner(System.i......