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

C++虚函数探讨(二)

 
阅读更多

环境:VS2010

代码:


分析:

主函数里构造B,应该调用基类构造函数,再调用自己的构造函数,这里容易想明白,但是构造函数里调用了q函数,q又是虚函数,这里应不应该调用派生类的q函数呢?

观察输出结果:

可以看出,并没有看到调用派生类的q虚函数。

这是为什么?因为构造对象时是从基类开始,到派生类的组合类,最后才是自己。当调用基类的构造函数时,不可能调用派生类的虚函数,因为对象都没有构造完全,怎么能让基类的指针指向派生类呢?所以是不会调用派生类的虚函数的。

总结:当基类构造函数调用虚函数时,不会调用派生类的虚函数。

分享到:
评论

相关推荐

    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++初学者

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

    C++虚函数表解析

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

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

    下面将详细探讨虚函数的使用技巧。 1. **虚函数声明**: 在C++中,通过在函数声明前加上`virtual`关键字来声明虚函数。例如: ```cpp class Base { public: virtual void func(); }; ``` 这样,`func`就是...

    c++虚函数的使用

    现在,让我们深入探讨一下虚函数的使用及其作用。 首先,虚函数在C++中的声明使用`virtual`关键字。例如: ```cpp class Base { public: virtual void print() { cout ; } }; ``` 在这个例子中,`print()`被...

    C++ 虚函数详细解析

    本文将深入探讨虚函数的概念、其实现机制以及如何理解虚函数表的工作原理。 #### 二、虚函数的基本概念 在C++中,虚函数的主要作用是实现多态性。多态性是指同一个接口可以有多种不同的行为,通常表现为通过基类...

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

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

    指针高级应用_虚函数

    在这个主题中,我们将深入探讨指针的高级应用,特别是与虚函数相关的知识,以及如何进行强制类型转换。通过理解和掌握这些知识点,你的C++技能将得到显著提升。 首先,让我们来看看“虚函数”。虚函数是C++中的一个...

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

    在C++中,虚函数允许子类重写父类的功能,这是实现多态性(Polymorphism)的基础。当一个基类指针或引用指向派生类的对象时,通过调用虚函数,可以执行派生类中的版本,而不是基类的版本。这种机制使得代码更加灵活...

    数据结构 C++ 虚函数与虚基类 5个.rar

    "虚函数"和"虚基类"是C++多态性的重要概念,它们使得面向对象编程更加灵活和强大。下面我们将深入探讨这两个主题。 首先,虚函数(Virtual Functions)是C++中实现动态多态的关键。当一个基类指针或引用指向其派生...

Global site tag (gtag.js) - Google Analytics