前文:《Essential C++》笔记之漫游:面向对象编程思维
同时推荐一篇总结得非常清晰的博文:C++ 子类继承父类纯虚函数、虚函数和普通函数的区别

不说废话,直接上程序:

例一(未用虚函数,这里没有实现函数重载)


代码:

//小问学编程
#include<iostream>using namespace std;class Base
{public:int f(int i){cout<<"f(int):";return i+1;}
};class Derived:public Base
{public:double f(double d){cout<<"f(double):";return d+1.3;}
};int main()
{Derived* pd=new Derived;cout<<pd->f(2)<<'\n';cout<<pd->f(2.3)<<'\n';return 0;
}

例二(未用虚函数,实现函数重载)


代码:

//小问学编程
#include<iostream>using namespace std;class Base
{public:int f(int i){cout<<"f(int):";return i+1;}
};class Derived:public Base
{public://make every f from Base available in this classusing Base::f;double f(double d){cout<<"f(double):";return d+1.3;}
};int main()
{Derived* pd=new Derived;cout<<pd->f(2)<<'\n';cout<<pd->f(2.3)<<'\n';return 0;
}

例三(未用虚函数,尝试实现函数重写)


代码:

//小问学编程
#include<iostream>using namespace std;class Base
{public:void mf(){cout<<"Base::mf"<<endl;}
};class Derived:public Base
{public:void mf()//override non-virtual function{cout<<"Derived::mf"<<endl;}
};int main()
{Derived d;//use dofferent pointers to point same objectBase* pb=&d;Derived* pd=&d;pb->mf();pd->mf();return 0;
}

例四(使用虚函数,实现多态)


代码:

//小问学编程
#include<iostream>using namespace std;class Base
{public:virtual int f(int i=1)const{cout<<"f(int):";return i+1;}
};class Derived:public Base
{public:virtual int f(int i=2)const{cout<<"f(int):";return i+100;}
};int main()
{Base* pa=new Base;cout<<pa->f()<<'\n';cout<<pa->f(3)<<'\n'<<endl;Base* pb=new Derived;cout<<pb->f()<<'\n';cout<<pb->f(3)<<'\n'<<endl;Derived* pc=new Derived;cout<<pc->f()<<'\n';cout<<pc->f(3)<<'\n'<<endl;return 0;
}

C++之关于虚函数和多态的分析和补充相关推荐

  1. C++中虚函数与多态实现

    多态,什么是多态?在计算机语言中,多态就是指一个接口或者方法,有多种展现形态.在C++中,通过父类指针调用子类方法,可以让父类指针有多种形态. C++中实现多态的方式有:虚函数,重载,模板,绑定等.此 ...

  2. C语言面向对象编程(三):虚函数与多态

    在< C++ 编程思想>一书中对虚函数的实现机制有详细的描述,一般的编译器通过虚函数表,在编译时插入一段隐藏的代码,保存类型信息和虚函数地址,而在调用时,这段隐藏的代码可以找到和实际对象一 ...

  3. 子类重写父类虚函数_C/C++编程笔记:关于C++的虚函数和多态,你真的了解吗?...

    前言 本章节主要针对于C++中的虚函数和多态做一个详细介绍. 虚函数 虚函数的长相其实很简单,在C++类型用virtual修饰的函数就是虚函数,如下代码: 虚函数对于本类的影响:存在虚函数类的内存会多 ...

  4. C++虚函数实现多态的机制

    该博文为原创文章,未经博主同意不得转载,如同意转载请注明博文出处 本文章博客地址:https://cplusplus.blog.csdn.net/article/details/105043638 虚 ...

  5. C++ 面向对象(二)多态 : 虚函数、多态原理、抽象类、虚函数表、继承与虚函数表

    目录 多态 多态的概念 多态的构成条件 虚函数 虚函数的重写 协变(返回值不同) 析构函数的重写(函数名不同) final和override final override 重载, 重写, 重定义对比 ...

  6. C++编程思想:继承与虚函数以及多态

    文章目录 简介 实现虚函数多态的技术原理 对象切边 析构函数和构造函数中的虚函数 使用继承的类的析构函数应该使用虚函数修饰符 简介 继承与虚函数与多态是浑然一体的三个概念,父类中虚函数可以表现出多态特 ...

  7. 初入c++(六)虚函数实现多态,虚析构函数,虚函数表和多态实现机制,纯虚函数。

    1.c++多态的概念以及用途. 1.1虚函数实现多态 通过基类指针只能够访问派生类的成员变量,不能够访问派生类的成员函数. 解决问题的办法:使用虚函数(virtual function),只需要在函数 ...

  8. (转) 用虚函数实现多态

    http://www.cnblogs.com/nihaoCPP/p/4422682.html 用虚函数实现多态 在理解了面向对象的继承机制之后,我们知道了在大多数情况下派生类是基类的"一种& ...

  9. (八)C++学习 | 虚函数和多态的基本概念

    文章目录 1. 虚函数 2. 多态 3. 基于多态的实例 3.1 魔法门之英雄无敌 3.2 几何形体处理程序 4. 总结 参考 1. 虚函数 在类的定义中,前面带有关键字virtual的成员函数称为虚 ...

最新文章

  1. 在线绘图|差异分析——在线做时序分析
  2. 《LeetCode力扣练习》第5题 C语言版 (做出来就行,别问我效率。。。。)
  3. 超图软件:以用户价值为源点做精准化的研发
  4. c++(和opencv)如何把局部变量变成全局变量的功能
  5. ios服务器需要开启ipv6的支持,针对iOS审核要求为应用兼容IPv6
  6. C# 数组增加元素_C#的集合类型及使用技巧
  7. 【C、C++】ctype.h、cctype中的isnumber()函数和isdigit()函数的区别
  8. 【大数据课堂000】今天开课了每天更新一集
  9. Linux如何查看所有的用户和组信息
  10. VC++实现ip数据包分析
  11. php tp框架,TP框架
  12. TerraSolid工具试用系列3----TerraModel从点云生成并导出DEM或DSM备注
  13. java贴图技术坦克世界_坦克世界游戏图像设置技巧 如何提高FPS
  14. 解决Google Earth谷歌地球无法连接服务器问题
  15. ANSYS APDL学习(3):ANSYS APDL 导入x_t格式模型并受力分析范例
  16. mysql 开源聊天系统_轻量级的开源企业聊天软件 喧喧聊天(界面很不错)
  17. 钉钉小程序如何判断其当前环境
  18. 矩阵的求秩:rank( )
  19. MicroLib微库和ARM标准C库:usart使用中printf重定向引起的问题
  20. 计算机网络篇—《自顶向下方法》学习笔记

热门文章

  1. JavaWEB开发的国际化
  2. 基于JAVA+Servlet+JSP+MYSQL的汽车维修保养管理系统
  3. jedis操作set_你真的会使用redis的数据类型set么
  4. 标自然段的序号格式_你可能还不会基本的公文格式
  5. 2014年西安区域赛的几道水题(A. F. K)
  6. HttpWebRequest以及HttpWebResponse
  7. webtest 文章
  8. python排序-堆排序
  9. bundle中vim相关快捷键的使用
  10. 纸上谈兵: 队列 (queue)