这个是C++中虚函数以及多态性。 我们知道,如果派生类中重定义了基类中的虚函数,即使用基类的类型指针调用该函数,那么实际上连编的是派生类的函数。比如, class A { virtual void out() { printf("A");} } class B : public A { virtual void out() { printf("B");} } void main() { A* a = new B; a->out(); <== 调用的是B的out,而不是a的out,输出的实际上是 B。 delete a; } 这种派生类可以改变基类指针特性的行为,就被称为多态性。 然而,当派生类具有了新的特征,有些时候,我们仍然希望保留基类的特征,也就是说,我们希望能够调用基类定义的out函数,所以就出现了A::out()这样的语法,以便允许从派生类中直接调用基类实现的out虚函数。比如 class B : public A { virtual void out() { printf("B"); <== 输出B A::out(); <== 输出A,不是静态函数调用,而是基类虚函数调用。 } } void main() { A* a = new B; a->out(); <== 调用的是B的out,输出的实际上是 BA a->A::out(); <== 还可以这样调用,现在a类型指针可以直接调用自身实现的out,输出的是 A delete a; }

MFC中关于虚函数的一些问题相关推荐

  1. C++中最好不要在构造函数和析构函数中调用虚函数!!!

    1.最好不要在基类和派生类的构造和析构函数中调用虚函数,不会出现多态性 实例如下: #include "iostream"using namespace std;class Bas ...

  2. C++对象模型8——构造函数和析构函数中对虚函数的调用、全局对象构造和析构、局部static数组的内存分配

    一.构造函数和析构函数中对虚函数的调用 仍然以https://blog.csdn.net/Master_Cui/article/details/109957302中的代码为例 base3构造函数和析构 ...

  3. C++中的虚函数与纯虚函数

    文章目录 1 C++中的虚函数 1.1 虚函数 1.2 单个类的虚函数表 1.3 使用继承的虚函数表 1.4 多重继承的虚函数表 2 C++中的纯虚函数 1 C++中的虚函数 1.1 虚函数 虚函数的 ...

  4. C# 构造函数中调用虚函数

    C# 构造函数中调用虚函数 using System; using System.Diagnostics; using System.Text; using System.Collections; u ...

  5. C++中的虚函数(virtual function)

    1回顶部 一.简介 虚函数是C++中用于实现多态(polymorphism)的机制.核心理念就是通过基类访问派生类定义的函数.假设我们有下面的类层次: class A { public: virtua ...

  6. C++学习笔记-----不要在构造函数和析构函数中调用虚函数

    考虑下面的程序: #include <iostream> using namespace std;class Base { public:Base() { cout << &q ...

  7. C++学习笔记-----永远不要在派生类中改变虚函数的默认参数值

    提到虚函数,我们就会自然而然的想到多态,但是当虚函数中存有默认参数值的时候,在派生类中重定义这个虚函数时不可以改变这个参数的值. 请看下面的例子: #include "stdafx.h&qu ...

  8. C++中最好不要在构造函数和析构函数中调用虚函数

    1.最好不要在基类和派生类的构造和析构函数中调用虚函数,不会出现多态性 实例如下: #include "iostream"using namespace std;class Bas ...

  9. c++ map 析构函数_C++|类继承关系中的虚函数、虚析构函数、虚基类

    在继承关系中,虚函数.虚析构函数.虚基类中使用的关键字virtual都是在告诉编译器,此处要进行特殊处理: 虚函数:函数重写时的要求编译器动态绑定来实现多多态 : 虚析构函数:当基类指针指向在堆内实现 ...

最新文章

  1. 2021浙江英语高考成绩查询,2021浙江高考英语试卷难度如何
  2. WebRTC成为W3C和IETF正式标准
  3. java 写 gz_java简写名词解释 - osc_gzyujipq的个人空间 - OSCHINA - 中文开源技术交流社区...
  4. 机器学习实战(十一)FP-growth(频繁项集)
  5. 在QGraphicsScene中嵌入QWidget
  6. 摩卡软件助大连港建设发展成为全方位、多功能、现代化的国际大港
  7. 微信开发者工具的tabBar和数据双向绑定
  8. Python数据分析与展示(一)(基于北理MOOC)
  9. c语言定时器中断实验报告,单片机实验报告-定时器中断实验.doc
  10. SuiteCRM添加自定义字段
  11. Adreno Profiler分析任意安卓游戏特效+抓取资源
  12. [Python] 年终奖税后计算器
  13. Win10 删除默认共享文件夹
  14. nrf uart for android,nRF Toolbox for BLE
  15. Android 12.0 修改系统默认字体的大小
  16. Allegro学习笔记:“如何建自己的Subclass”
  17. Word一部分内容分为两栏或多栏的方法
  18. 全国降雨量数据、气温数据、风速数据
  19. 手机号码正则表达式(含虚拟运营商)
  20. 编写程序,输入本金、年利率和年份,计算复利(结果保留2位小数)

热门文章

  1. webplugin 没有画面_[问题记录] webpack devServer HtmlWebpackPlugin 没有加载 js、css
  2. java gsoap_gsoap c与java web之间传输字符串中文乱码问题 | 学步园
  3. c语言ox32左移一位的值,程序设计基础 (C)(32+32) 实验指导书.docx
  4. php一对多聊天程序代码,微信小程序实现一对多发消息
  5. 【STM32入门】这个项目绝了,用手势来产生波形,基于手势控制的波形发生器
  6. 【开源项目】特斯拉+树莓派实现车牌识别检测系统
  7. proxool java_Java应用中使用Proxool
  8. 惠普战66怎么用u盘进入系统_惠普笔记本怎么用u盘启动装系统,空间也要大所以超来超受欢迎!...
  9. html元素以开始标签起始,HTML文本
  10. python从入门到实践笔记_Python编程 从入门到实践 #笔记#