说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

请教:构造函数为啥不能是虚函数?

编辑:说三道四文库 发布时间:2017-01-22 03:40
HTML文档下载 WORD文档下载 PDF文档下载
因为构造派生类对象时,会自动调用基类构造函数。而当执行基类构造函数时(即基类对象被构造时),派生类对象还不存在,而如果基类构造函数如果是虚函数,就会调用派生类构造函数,如果派生类构造函数访问了派生类特有的数据(即基类中没有的数据)时,会造成灾难!
同样道理,即使基类的构造函数调用了虚函数,该虚函数也不会执行派生类的代码,而是执行基类中该函数代码。

见 http://localhost/asp/sunidoc.asp?act=-2&article=224 中的一段

[23.1] 当基类构造函数调用虚函数时,为什么不调用派生类重写的该虚函数? 
当基类被构造时,对象还不是一个派生类的对象,所以如果 Base::Base() 调用了虚函数 
virt(),则 Base::virt() 将被调用,即使 Derived::virt() (译注:即派生类重写的虚 
函数)存在。 

同样,当基类被析构时,对象已经不再是一个派生类对象了,所以如果 Base::~Base() 
调用了 virt(),则 Base::virt() 得到控制权,而不是重写的 Derived::virt()。 

当你可以想象到如果 Derived::virt() 涉及到派生类的某个成员对象将造成的灾难的时候, 
你很快就能看到这种方法的明智。详细来说,如果 Base::Base() 调用了虚函数 virt(), 
这个规则使得 Base::virt()被调用。如果不按照这个规则,Derived::virt()将在派生对象 
的派生部分被构造之前被调用,此时属于派生对象的派生部分的某个成员对象还没有被构造, 
而 Derived::virt() 却能够访问它。这将是灾难。
VPTR 的状态是由被最后调用的构造函数确定的!
就是要赚钱!NativeX推自定义原生广告交易 继智能手机后的下一个战场:智能家居 鏖战云端——亚马逊的生存法则 如何保住公司的人才:创造良好的学习氛围 主宰全球的10大算法 专访Google数据科学家彭晨:大数据成为潮流走近各行各业! 强横Metal技术来袭,能否取代OpenGL? Swift横空出世,Xcode 6 Beta有了哪些新变化? 《近匠》GameMei:简单易用、快速开发商用游戏 Gartner:2014年一季度浪潮服务器出货量中国第一 【技术博客推荐】张安站:大数据时代下的商业存储 Amazon继续登顶IaaS魔力象限,榜眼是微软而非Google 友盟Q1移动互联网报告:解读三线城市移动互联网用户 智能生活 “视”不可挡——首届TCL杯HTML5智能电视开发大赛等你来挑战 Mobile First!开源HTML5游戏引擎Kiwi.js 1.0正式发布 天天用的开发环境,你真的了解吗? 物联网时代,你的汽车也在转型 触宝输入法产品经理解析iOS 8第三方输入法开放程度 专访联想谢政维:功耗和价格是天蝎项目最大障碍! 《近匠》蚁视科技创始人覃政:ANTVR,虚拟现实的新生 后棱镜门时代:开发者保护应用安全的5大技巧 专访许鹏:谈C程序员修养及大型项目源码阅读与学习 65种GPU性能测试,AMD开源驱动领先! 一周消息树:我们从WWDC 2014收获了什么? 精益设计:“纸上谈兵”的说服力 指尖上的艺术——如何运用代码发挥无限创意 周末巨献:100+诡异的数据集,20万Eclipse Bug、死囚遗言等 TIOBE 2014年6月编程语言排行榜:Swift能否取代Objective-C? 移动游戏后端:开发还是购买?你必须知道的6件事 Vuforia SDK 3.0发布在即 全球注册开发者已逾10万 最受职场青睐的十大热门云计算技能盘点 软件发布:我的资料3.0完整版 软件发布:OpenSearch网络搜索软件(正式版)免费! 软件发布:“梦”网页编辑器(HomeBuild) 软件发布:股票之星 4.0 软件发布:词汇通霸[挑战王I号] 软件发布:龙飞QQ伴侣 软件发布:信息群发圣手(Bbs+Email+icq)免安装版 软件发布:网络主机扫描软件(HostScan) 软件发布:ADSL 超频奇兵 软件发布:绿幽灵高速多功能浏览器 软件发布:辟邪脸谱 软件发布:邮件群发机 软件发布:拯救地球 软件发布:九城的修行器 软件发布:龙飞定时器 软件发布:加密vfp的exe,防止反编译 软件发布:“破解注册表编辑器” 软件发布:神奇注册表 软件发布:CDWizard(光驱精灵.NET) 软件发布:神通 2001 豪华版 软件发布:VB6历史文件清理器 菜单问题!!送分哟! 请问PB7.0中,Freeform格式的数据窗口中,为何按滚动条,数据不是滚动到第一页就是最后一页?如何实现自由滚动? B/S结构用何东东编最快? 关于mpeg-4 请问各位大虾:CBitmap对象如何写入一个BMP文件? 对面的大哥看过来!高分征解有关SetWindowPos的问题。 如何刷新文件内容的缓冲? 昨天一夜星际~~~后 一个捉摸的问题,、高分请解决! 在WEBLOGIC5.1上发布EJB1.1的一个小问题 请教,如何用jbuilder 写midas的服务器, 我们公司一个程序员的头式太难看了,我每次见他就恨不得拿剃头的推子给他剃光光! 寻最好的ftp软件 autoCAD的问题 找本站里面《程序员测试软件》的注册码 刚毕业的不能报? .lib 文件到底是怎么回事?如何查看它的内容? 请问,下面的警告提示什么意思(关于sybase) 那位可以给我描述一下“代表”? 请问有WINsock编程高手么,帮我看一下下面的程序 紧急招聘PB程序员(成都) 关于产品序列号的问题……想了很久了。 这里有几个问题,能者请进! 请教VC项目开发经验 如何让下载的程序变成免费的? 请问有Pdf到Text的转化的源代码么? 能否让下载的程序变成免费的? 请问怎样才能自动复制文本框中的文本到剪贴板? 是否可用简体中文的VB开发翻体中文的应用程序? 使用JavaMail转发邮件 能用普通小麦粉做蛋糕吗就是在超级市场买的那种散装的小麦粉可是做蛋糕好像要用低筋面粉那么可以用小麦粉代替吗?成品会不会有很大差别? 原有大米和面粉165吨,大米售出7∕2后,又运来面粉15吨,这是大米与面粉的吨数正好相等,原有大米多少吨 艾华读一本180页的故事书,第一天看了全书的五分之二,第二天看了全书的四分之一,第三天应从第几也看起? 用鸡蛋,面粉,食用油能搞蛋糕吗?如果可以, 右图是佳美西饼屋做曲奇饼干时的配料使用情况统计图,如果鸡蛋使用1.5千克,那么面粉需要多少千克? 小明看一本故事书,上午看了全书的三分之一,下午看了全书的五分之二,这本书共有120页,小明晚上接着看这本书应从第几页开始看? 一千克蘑菇含水率为98%,谅干后含水率为96%,请问此时蘑菇有多重? 家庭制作蛋糕时为什么要将低筋面粉和泡打粉混合过筛? 食堂买来两袋面粉,第一袋重50千克,第二袋重45千克,第一个星期吃了总数的2/3,吃了多少千克 一千克鲜蝇蛆晒干有多重那干子磨成粉呢 怎样用泡打粉做蛋糕?我用微波炉做蛋糕,可是做出来的不松软,面粉是用泡打粉发酵的,加了鸡蛋和牛奶还有蜂蜜,直接搅拌均匀后做的,为什么没有发酵开呢? 有两袋面粉,第一袋是第二袋的5/6,.如果从第二袋中取出3千克,则同样重,怎样计算 100粒大米大概有多重啊,或者半斤大米有多少粒? 做蛋糕泡打粉能用什么代替买到了低筋面粉 结果找不到泡打粉,好像看到有自发粉,可以代替吗做馒头的发酵粉是泡打粉吗?如果不是,能代替泡打粉吗? 仓库里有一批面粉,第一天运走全部的一半多18吨,第二天运走全部的一半少5吨,还剩40吨,仓库原有多少吨? 一袋大米的80%比它的1/2多24千克,这袋大米重( )千克? 做蛋糕用的泡打粉是什么?发哮么? 粮店库存面粉若干袋,第一天卖出库存的一半多4 袋,第二天卖出剩下的一半少3袋,第三天运进的和第二天卖出后剩下的同样多,这时粮店共有面粉50袋,粮店原来库存多少袋面粉? 一袋大米的百分之80比它的1/2多24千克,这袋大米重( )千克 什么能代替泡打粉做蛋糕?我自己在家做蛋糕,以前用的是香甜泡打粉,估计是双效的没仔细看.现在换了一种泡打粉发的太快了,以前做完一桶面要两个小时,自始至终都发的很好,现在用的泡打粉 水果批发站,第一天批发水果是库存的一半少20箱,第二天又批发出剩余的一半多30箱,第三天运进200箱,使库里的水果增加2倍,原有水果多少箱? 一袋大米的80%是24千克,这袋大米重( )千克. 做蛋糕时,规定每400克面粉需加进5只鸡蛋.现在有面粉6400克,已经加进50只鸡蛋,还需要加进鸡蛋多少只,才能符合规定的鸡蛋成分?怎么运算?请用最简单的道理来说明好吗? 水果批发市场,第一天批发出的水果是库存的一半少15箱,第二天又批发出剩余的一半多20箱,第三天运进300箱水果,使库存增加3倍,问原来有多少箱水果? 一袋大米的80%比他的一半多24千克,这袋大米重( )千克. 鸡蛋面粉怎么做 水果批发站第一天批发是库车的一半少20箱,第2天有批发出剩余的一半多30箱,第3天运进200箱使库里的水果增加2倍,原来水果有多少箱 一袋大米的80%比它的二分之一多24千克,这袋大米重多少千克?(不用解答,只要说出分析就行了) 甲数占乙数的五分之四,把()看作单位1,()x5分之四=() 丙数的5分之三等于乙数,把()看作甲数占乙数的五分之四,把()看作单位1,()x5分之四=() 丙数的5分之三等于乙数,把()看 有一筐72千克的苹果,第一天吃了他的6分之1,第二天吃了他的8分之5.还剩下几分之几?还剩下多少千克?用分数回答 一袋大米第一周吃了五分之二,第二周吃了五分之一,还剩六千克,这袋大米原有多少千克? 甲数相当于乙数的七分之五这句话把()数看作单位1 一筐苹果重72千克.第一天吃了它的8分之一,第2天吃了它的9分之一,还剩下这筐苹果的几分之几?第一天吃了多少千克苹果快 一袋大米,吃了1/8.剩下的比吃了的多66千克,这袋大米有多重 “甲数的五分之三相当于乙数”是把()当做单位“1”,这时还可以知道甲数比艺术多几分之几,乙数比甲数少百分之几 王大伯收了2/1吨西瓜,第一天卖出总数的3/1,第二天卖出总数的10/1,还剩下总数的几分之几? 一袋大米重24.5千克.(1 )第一周吃了二分之一袋,吃了多少千克?(2)第二周吃了五分之二袋一袋大米重24.5千克.(1 )第一周吃了二分之一袋,吃了多少千克?(2)第二周吃了五分之二袋,吃了 甲数相当于乙数的4/7.单位 1 是什么?数量关系是什么? 运来420个西瓜.第一天卖出总数的二分之一,第二天卖出总数的三分之一.还剩总数的几分之几? 一袋大米,吃了百分之四十,剩下的大米比吃了得多十千克,这袋大米多少千克 甲数比乙数多八分之七,求单位一 有一袋面粉,第一次用去全部的1/5,第二次用去余下的15%,还剩34千克面粉,共有多少千克? 做蛋糕如果没有低筋面粉可不可以用淀粉加普通面粉代替?说是可以用玉米淀粉+普通面粉代替可是没有玉米淀粉 那用普通面粉+普通面粉代替可以么 普通面粉就是马铃薯淀粉 甲数是乙数的五分之一,是把什么看作单位1,数量关系式是 一袋面粉重一千克,第一次用去了五分之一千克,第二次用去了三分之二千克,两次一共用去多少千克?还剩多少千克? 过程详细点 电饭煲做蛋糕,材料:低筋面粉,牛奶,鸡蛋的比例是多少?假如用2两面粉做的话,需要几个鸡蛋,多少牛奶电饭煲做蛋糕,材料:低筋面粉,牛奶,鸡蛋的比例是多少?假如用2两面粉做的话,需要几个鸡 甲的5分之4等于乙. 单位“1”的量是: 甲相当于乙的8分之3.单位“1”的量是:剩下全长的3分之2.单位“1”的量是: 一袋面粉多少克 请问苹果、鸡蛋和牛奶能一起吃吗?早餐时吃的 谁是谁的几分之几,谁的几分之几,谁比谁少.分数应用题怎么做有什么办法好记?用乘法还是除法?“比”“是”“的”等一些连接词用什么法?把数量关系式补充完整怎么做?反正很多很多! 冬冬家买来一袋面粉,吃了五分之三,正好是9千克.原来这袋面粉重多少千克?如题,就是这样,用方程解,求过程 用面粉、牛奶、鸡蛋、糖按照6;3;3;2做成一种蛋糕重8千克,需要这四种材料分别多少千克? 谁是谁的几分之几乘还是除 冬冬家买来买来一袋面粉,吃了15千克,正好是这袋面粉的5分之3,这袋面粉重多少千克(写等量关系式) 解决一个应用题:用面粉、牛奶、鸡蛋、糖按照6:3:3:2做成一种蛋糕重8千克,需要这四种材料分别多少?怎样列式计算? 某粮店出售的三种品牌的面粉袋上,分别标有质量为(25±0.1)kg、(25±0.2)kg、(25±0.3)kg的字样,从中任意拿出两袋,它们的质量最多相差多少?原因是什么?过程?为什么有人说0.5 有人说0.6 到 1、冬冬家买来一袋面粉,重25千克.吃了五分之三,吃了多少千克?2、冬冬家买来一袋面粉,吃了1、冬冬家买来一袋面粉,重25千克.吃了五分之三,吃了多少千克?2、冬冬家买来一袋面粉,吃了15千克, 用家庭面包机做蛋糕和面包要用什么面粉用面包机自己做面包或者蛋糕分别要用什么样的面粉做出来才好 1、 上午卖出1/4,下午卖出的是上午的4/5.还剩下110袋,这一天该店共卖出多少袋面粉? 一本一百页的故事书,第一天看了书的五分之二,第二天看了书的四分之一,第三天要看多少页才能把书看完?
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn