#include <iostream>class cx {
public:virtual void func() {std::cout << "func" << std::endl;}cx() {func(); //构造函数中调用虚函数,语法上OK,效果上不对,因为当对象由子类进入基类构造时是基类类型的//不管如何调用,总只能调用到基类的虚函数,无法调用到子类的虚函数,见下面测试
    }};class cb : public cx {void func() {std::cout << "cb.func" << std::endl;}
};
int main()
{cx ox; //funccb ob; //func
cx* pox = new cb(); //funcpox->func(); //cb.func
}

C++构造函数调用虚函数的后果相关推荐

  1. 构造函数调用虚函数的问题

    一般情况下,不允许在构造函数或者析构函数中调用虚函数.其实语法上都没有问题,只是会失去多态性. 如果在构造函数中调用虚函数,会先调用父类中的实现,也就失去了多态的性质. class A {public ...

  2. 构造函数调用虚函数先从子类搜索同名函数

    1 class X 2 { 3 X() 4 { 5 System.out.println("x"); // 6 vir(44); //看到vir会先搜索子类中的vir是否存在,如果 ...

  3. C++构造函数和析构函数调用虚函数时都不会使用动态联编

    先看一个例子: #include <iostream> using namespace std;class A{ public:A() {show();}virtual void show ...

  4. Effective C++(9) 构造函数调用virtual函数会发生什么

    问题聚焦: 不要在构造函数和析构函数中调用virtual函数,因为这样的调用不会带来你预想的结果. 让我先来看一下在构造函数里调用一个virtual函数会发生什么结果 Demo class Trans ...

  5. C++构造函数与析构函数调用虚函数的注意事项

    虽然可以对虚函数进行实调用,但程序员编写虚函数的本意应该是实现动态联编.在构造函数中调用虚函数,函数的入口地址是在编译时静态确定的,并未实现虚调用.但是为什么在构造函数中调用虚函数,实际上没有发生动态 ...

  6. python构造函数调用成员函数_成员函数中的Python调用构造函数

    让我们以这个类为例,它正在扩展MySQLDB的connection对象.在class DBHandler(mysql.connections.Connection): def __init__(sel ...

  7. python构造函数调用成员函数_Python 子类构造函数调用

    super作用 如果子类(Puple)继承父类(Person)不做初始化,那么会自动继承父类(Person)属性name. 如果子类(Puple_Init)继承父类(Person)做了初始化,且不调用 ...

  8. java 析构函数_C++虚函数

    码字不易,欢迎给个赞! C++虚函数是多态性实现的重要方式,当某个虚函数通过指针或者引用调用时,编译器产生的代码直到运行时才能确定到底调用哪个版本的函数.被调用的函数是与绑定到指针或者引用上的对象的动 ...

  9. c++整理--虚函数

    一.虚函数是这么实现的 解析: 简单的说,虚函数是通过虚函数表实现的,那么什么是虚函数表呢? 事实上,如果一个类中含有虚函数表,则系统会为这个类分配一个指针成员指向一张虚函数表(vtbl),表中每一项 ...

最新文章

  1. ssh vim中不小心按下ctrl+s
  2. Django搭建个人博客(二)
  3. 云炬随笔20210930
  4. LeetCode 925. 长按键入(双指针)
  5. 04_Spring中使用Quartz
  6. 获取滑动条高度_HexMap学习笔记(三)——海拔高度与阶梯连接
  7. Linux服务器php7.3,安装zip扩展
  8. 华为matepad使用鸿蒙系统,首发鸿蒙系统!华为MatePad采用骁龙+麒麟双芯片版本,哪款更香?...
  9. 50位中国女性科学家入选2022福布斯
  10. Oracle数据库如何保存中文特殊字符到数据库表中,防止出现问号
  11. ZigBee 3.0实战教程-Silicon Labs EFR32+EmberZnet-3-01:BootLoader+Application的开发模式
  12. Paypal学习 2 -- IPN (Instant Payment Notification)
  13. redis-shake 同步redis数据
  14. 和HTTP协议密切协议
  15. 从百度地图批量获取中国县级以上行政区划边界坐标
  16. Matlab diag的用法
  17. LTHTB五脚充电芯片规格书,LTH7B规格书
  18. 读书笔记:精益数据分析 第17-20章
  19. CST软件遇到这个问题,打不开软件,有什么办法?求教各位电磁学同行
  20. R语言数据框data.frame行和列求和方法

热门文章

  1. Windows下配置Hadoop的Java开发环境以及用Java API操作HDFS
  2. NuGet(微软.NET开发平台的软件包管理工具)在VisualStudio中的安装的使用
  3. DevExpress的GridControl的使用以及怎样添加列和绑定数据源
  4. 系统架构设计师视频教程免费下载
  5. SpringBoot中使用thymeleaf时ajax请求不能回显消息
  6. Python的Tkinter点击按钮触发事件
  7. JDK 1.5 主要新特性
  8. oracle查询各个池的使用率,oracle查询连接数、并发数、共享池大小
  9. 案例 | 撇开虚荣指标,如何策划一场成功的拉新活动?
  10. 神策数据荣膺 2017 企业创新典范、最佳青年榜样双殊荣