C++多态的使用
2021/5/1 22:25:11
本文主要是介绍C++多态的使用,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
一、多态有静态多态和动态多态:
1、静态多态:函数重载和运算符重载属于静态多态,复用函数名
2、动态多态:派生类和虚函数实现运行时多态
二、静态多态和动态多态的区别
1、静态多态函数地址早绑定:在编译阶段确定函数地址
2、动态多态的函数地址晚绑定:运行阶段确定函数地址
三、动态多态满足条件
1、有继承关系
2、子类重写父类虚函数
四、动态多态的使用
父类的指针或者引用 执行子类对象
代码:
#include <bits/stdc++.h> using namespace std; const int maxn = 1e5 + 5; class Animal { public: virtual void speak() { printf("Animal is Speaking\n"); } }; class dog : public Animal { public: virtual void speak() //这里的virtual可写可不写 { printf("dog is Speaking\n"); } }; class cat : public Animal { public: virtual void speak() //这里的virtual可写可不写 { printf("cat is Speaking\n"); } }; void test1(Animal &a) { a.speak(); } void test2(Animal *a) { a->speak(); } int main() { dog g; cat t; test1(t); dog * ptr = &g; test2(ptr); return 0; }
这篇关于C++多态的使用的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23增量更新怎么做?-icode9专业技术文章分享
- 2024-11-23压缩包加密方案有哪些?-icode9专业技术文章分享
- 2024-11-23用shell怎么写一个开机时自动同步远程仓库的代码?-icode9专业技术文章分享
- 2024-11-23webman可以同步自己的仓库吗?-icode9专业技术文章分享
- 2024-11-23在 Webman 中怎么判断是否有某命令进程正在运行?-icode9专业技术文章分享
- 2024-11-23如何重置new Swiper?-icode9专业技术文章分享
- 2024-11-23oss直传有什么好处?-icode9专业技术文章分享
- 2024-11-23如何将oss直传封装成一个组件在其他页面调用时都可以使用?-icode9专业技术文章分享
- 2024-11-23怎么使用laravel 11在代码里获取路由列表?-icode9专业技术文章分享
- 2024-11-22怎么实现ansible playbook 备份代码中命名包含时间戳功能?-icode9专业技术文章分享