`
yanghuidang
  • 浏览: 911694 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

C++虚函数探讨(一)

 
阅读更多

环境:2010

代码:


读者可以思考一下输出结果。

现在来看输出结果:

分析:主函数里基类类型的指针指向派生类,fun1()里传的是指向派生类的指针,又因为函数show是虚函数,所以这里应该调用的是派生类的show方法。fun2()传的是基类的对象,fun2()里是对对象的引用,所以这里应该调用的是基类的show方法。fun3()里传的是对象,即使传的是对象D,但因为fun()里是B对象,初始化时使用的是B类的复制构造函数。由于复制构造函数接收的是B类型的常引用,d又符合类型兼容规则,所以可以作为参数传给它。由于执行的是B的复制构造函数,只要B类型的成员会被复制,d类的不会复制,也没有空间存储,所以生成的是对象是基类的B对象,进而输出的是'B'。

总结:基类的指针可以指向派生类的对象,基类的引用可以作为派生类的别名,但基类的对象不能表示派生类的对象

分享到:
评论

相关推荐

    C++数据封装和虚函数的探讨 适合c++初学者

    C_数据封装和虚函数的探讨适合c++初学者

    探讨C++中不能声明为虚函数的有哪些函数

    1.为什么C++不支持普通函数为虚函数? 普通函数(非成员函数)只能被overload,不能被override,声明为虚函数也没有什么意思,因此编译器会在编译时邦定函数。 多态的运行期行为体现在虚函数上,虚函数通过继承方式...

    C/C++杂记 虚函数的实现的基本原理(图文)

    简单地说,每一个含有虚函数(无论是其本身的,还是继承而来的)的类都至少有一个与之对应的虚函数表,其中存放着该类所有的虚函数对应的函数指针。例: 其中: B的虚函数表中存放着B::foo和B::bar两个函数指针。 D...

    深入探讨C++父类子类中虚函数的应用

    本篇文章是对C++父类子类中虚函数的使用进行了详细的分析介绍,需要的朋友参考下

    c++多态和虚函数表

    重点阐述了面向对象的动态多态和基于模板的静态多态,并初步探讨了两种技术的结合使用。

    c++多态技术和虚函数表

    本文描述了C++中的各种多态性。重点阐述了面向对象的动态多态和基于模板的静态多态,并初步探讨了两种技术的结合使用。

    C++初学者指南(原版)

    虚函数支持多态性(面向对象编程的“一个接口,多种方法”原理)。 第 11 章:C++ I/O 系统 C++ I/O 系统非常大,无法在此讨论每个类、函数或功能,不过此模块将介绍最重要和最常用的部分。具体而言,它说明如何输入...

    C++反汇编视频教程(代码+课件+视频全套价值300元的付费教程)

    价值500元的C++反汇编收费课程:课程介绍 本套课程主要探讨如何读懂 C/C++ 语言程序的反汇编代码。...第十五讲 虚函数 第十六讲 单继承 第十七讲 多继承 第十八讲 C语言逆向实例 第十九讲 C++ 逆向实例 第二十讲 动态

    Visual C++实践与提高-COM和COM+篇『PDF』

    2.3.2.2 实现秘诀:虚函数(Virtual Functions) 2.3.3 使用抽象基类 2.3.4 例程实现 2.3.4.1 修改接口文件 2.3.4.2 修改对象程序 2.3.4.3 修改客户程序 2.4 改由COM库装载C++对象——例程dbalmostcom 2.4.1 COM库...

    侯捷 深入浅出MFC

    C++ 重要技术:类与对象、this 指针与继承、静态成员、虚函数与多态、模板(template)类、异常处理(exception handling)。 MFC 六大技术之简化仿真(Console 程序) 第二篇【欲善工事先利其器】提供给对...

    软件工程思想

    6.1.3 虚函数与多态 6.2 良好的编程风格 6.2.1 命名约定 6.2.2 使用断言 6.2.3 new、delete与指针 6.2.4 使用const 6.2.5 其它建议 6.3 小结 第七章 测试与改错 7.1 对测试的理解 7.1.1 测试的目的 7.1.2 测试的...

    IOI国家集训队论文集1999-2019

    来煜坤 -《把握本质,灵活运用——动态规划的深入探讨》 齐 鑫 -《搜索方法中的剪枝优化》 邵 铮 -《数学模型的建立、比较和应用》 石润婷 -《隐蔽化、多维化、开放化──论当今信息学竞赛中数学建模的灵活性》 ...

    精通DirectX.3D图形与动画程序设计.pdf

    a.4 虚函数、动态绑定和多态 a.5 双指针 a.6 内联函数 a.7 默认函数参数 a.8 声明变量的位置 a.9 const常量表达式  a.10 函数重载 a.11 运算符重载 附录b win32 api程序设计基础 b.1 api和sdk b.2 win32程序框架 b....

Global site tag (gtag.js) - Google Analytics