`
yanghuidang
  • 浏览: 950409 次
  • 性别: 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++虚函数与虚函数表的理解 #### 一、虚函数的概念 在C++中,虚函数(Virtual Function)是一种特殊类型的成员函数,它允许基类指针或引用指向派生类对象,并通过该基类指针或引用调用派生类中重写的同名函数。...

    C++ 虚函数表解析

    本文将深入探讨C++虚函数表(Virtual Table,简称V-Table)的原理与实现细节,以帮助读者更好地理解多态性背后的运作机制。 #### 虚函数与多态性 在C++中,虚函数允许我们通过基类的指针或引用来调用派生类的成员...

    C++虚函数调用机制初探

    ### C++虚函数调用机制初探 #### 引言 C++作为一种强大的面向对象编程语言,其核心特性之一便是支持多态性(polymorphism)。多态性允许程序员使用基类类型的指针或引用调用派生类的成员函数,这种能力极大地增强了...

    C++虚函数的应用

    下面我们将深入探讨C++虚函数的应用及其实现。 一、虚函数的基本概念 虚函数在基类中声明,通过在函数声明前加上`virtual`关键字来标识。这样,当基类指针或引用指向派生类对象时,调用该函数会执行派生类中的版本...

    C++虚函数表测试源码

    本文将深入探讨C++虚函数表的相关知识点,并通过标题中提到的测试源码进行详细讲解。 首先,理解虚函数的定义:在C++中,当一个基类的指针或引用指向派生类的对象时,如果该基类有一个虚函数,那么通过指针或引用...

    用C++实现虚函数

    本文将深入探讨如何使用C++实现虚函数,包括虚函数的基本用法、虚析构函数的概念以及如何计算类的大小。 首先,虚函数的声明是在基类的定义中完成的,通过在函数声明前加上`virtual`关键字。例如: ```cpp class ...

    C++虚函数表解析

    在C++编程语言中,虚函数表(Virtual Function Table,简称vtable)是实现多态性的一个关键机制。...通过阅读“C++虚函数表解析.docx”文件,你可以更深入地了解这个主题,包括其实际应用和潜在的优化策略。

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

    本文将深入探讨这两个概念,并通过一个具体的案例——大型图书馆媒介管理系统,来具体说明如何在实际项目中应用数据封装和虚函数。 ### 数据封装 数据封装是一种将数据和操作数据的方法(函数)捆绑在一起的机制,...

    虚函数的使用技巧.rar_C++虚函数_虚函数

    在C++编程语言中,虚函数(Virtual Function)是一个关键特性,它允许程序员实现多态性,这是面向对象编程中的核心概念。虚函数使得子类能够重写父类的方法,从而在运行时根据对象的实际类型调用正确的方法,而不是...

    c++虚函数的使用

    C++中的虚函数是面向对象编程的一个重要特性,它允许我们实现多态性,即一个基类指针或引用可以调用子类重写的成员函数。这种能力在处理继承层次结构时尤其有用,使得代码更加灵活和可扩展。现在,让我们深入探讨...

    C++ 虚函数详细解析

    C++ 是一种支持面向对象编程的语言,其中虚函数是实现多态的关键机制之一。本文将深入探讨虚函数的概念、其实现机制以及如何理解虚函数表的工作原理。 #### 二、虚函数的基本概念 在C++中,虚函数的主要作用是实现...

    C++的虚函数和JAVA的抽象函数

    本文将深入探讨C++的虚函数和Java的抽象函数。 首先,C++的虚函数是通过在函数声明前添加`virtual`关键字来实现的。虚函数的主要作用是在运行时确定调用哪个函数,这种机制称为动态绑定或晚期绑定。例如,如果有...

    指针高级应用_虚函数

    虚函数是C++中的一个关键特性,它允许我们实现多态性。在继承层次结构中,当基类指针或引用指向派生类对象时,通过虚函数调用,我们可以根据实际的对象类型来执行相应的函数实现。虚函数的关键在于虚函数表(vtable...

    c++中子类对象不能调用父类中的虚函数

    在C++编程语言中,`...理解子类对象不能直接调用父类虚函数这一概念,有助于避免编程中的常见错误,并能更好地利用C++的面向对象特性。在实际编程中,应始终通过基类指针或引用调用虚函数,以确保多态性的正确行为。

    C++虚函数、虚基类、C++实例、运算符重载

    C++是一种强大的面向对象编程语言,它提供了许多高级特性,如虚函数、虚基类、对象实例化以及运算符重载。这些特性使得C++在处理复杂问题时具有极高的灵活性和可扩展性。 首先,我们来探讨**虚函数**。在C++中,虚...

Global site tag (gtag.js) - Google Analytics