问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

这道金山的面试题怎么理解?请教

发布网友 发布时间:2022-05-29 20:02

我来回答

2个回答

热心网友 时间:2022-05-24 06:00

这道题考察了好几个方面:
1.全局变量的生命周期
2.类中静态成员的生命周期
3.构造函数和析构函数中对虚函数的调用
4.虚析构函数

把这几方面搞清楚了这道题就很容易了

全局变量是需要在进入main()函数前即初始化的,所以在一个程序中一个全局变量的构造函数应该是第一个被调用的,比main()函数都要早。同时他又必须在main()函数返回后才被销毁,所以他的析构函数是最后才被调用。
而一个类中的静态成员可以看成是一个有效范围受了*的全局变量。他的生命周期与一个全局变量相同,但他只能在这个类的范围内使用。
然后是构造函数和析构函数。在构造函数和析构函数中调用虚函数的话会破坏虚函数的虚拟性(多态性),而只能当作普通函数调用(在这两个函数执行时类的对象有可能是不完整的,无法确定继承的调用链),所以通常应尽量避免在构造函数和析构函数中调用虚函数。
一个类如果是作为基类让其他类来继承的,则他需要把析构函数声明为虚函数,这样在delete一个派生类的对象时才能由多态性调用该派生类所对应的析构函数;否则调用的都是基函数的析构函数。

之后再看题目就很清楚了。Derive类中有一个静态成员,则该成员的构造函数应当最先被调用。之后进入main()函数,new了一个Derive对象,则应顺次调用基类和派生类的构造函数,但基类的构造函数中调用了一个虚函数,这个函数只能被当成普通函数对待,不具备多态性,所以实际调用的仍是基类的Init()函数而不是派生类的。后面继续调用派生类的构造函数。然后是DestroyObj()函数,由多态性pOb->Dump()调用的是派生类的Dump()函数,所以输出了m_nVal的值。再然后是销毁对象,基类析构函数声明为虚函数,所以这里应依次调用派生类和基类的的析构函数。先是输出Derive::~Derive(),然后,基类的析构函数中又调用了一个虚函数,将它作为普通函数调用。。。main()函数终于执行完了,退出后销毁类Derive中的静态成员,调用他的析构函数。

另:如果把Value Derive::m_Val=0;语句屏蔽掉,相当于没有为他初始化,即没有分配空间,编译器会当成他是一个在其他文件中定义的变量,所以编译时应该没问题,但是链接时会报错。

热心网友 时间:2022-05-24 07:18

不是虚构函数,是析构函数
输出的结果
Call Value::Value(int nValue)
Call Base::Init()
Call Derive::Derive()
Value::m_nVal=0
Call Derive::~Derive()
Call Base::Release()
Call Value::~Value()

问题回答:
1.构造函数在你实例化一个对象时调用,析构函数就是在销毁时调用
2.可以定义为虚析构函数。
这样子类对象被释放时,会调用父类的析构函数和自身的析构函数,确保资源得到释放

补充问题的回答:
1.static的变量一般在main函数入口之前被初始化,在Derive类的构造函数之前
2.static变量必须在编译的时候就赋值
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
生产要素的需求有哪些性质 生产要素的需求有何特点? 什么是生产要素需求 微观经济学要素需求什么是条件要素需求?它和要素需求有什么不同?_百度... 养宠物的人遵守规则,是不是就能和别人平安相处呢? 企业培训学到了什么 培训感悟简短 有关培训的感悟 通过培训学到什么 培训你学到了什么 领导问培训学到什么怎么回复 c# 调用链表 Labview中函数选板中调用链什么意思 急求 蕙质兰心 柳体书法作品 2、莲,因洁而尊;人,因廉而正。柳体书法作品 十大品牌,实木沙发的选择,实木沙发什么木头好 暗黑2战网1.11MF,我练纯冰法好还是冰火法好? 暗黑2 1.11战网 冰法怎么搞到冰棒 还是怎么mf比较效率 请给一个mf高级装备的具体方法 如何快速注册 灵犀茶油有防腐剂吗? 北京铭龙雕刻机运行刀是逆时针转吗?还有切割8mm厚的亚克力板加工是顺时针切割还是逆时针切割,参数是多少? “师傅领进门,修行在个人 ” 出自谁之口? 大家对灵犀茶油的评价都怎么样? 灵犀茶油容易吸收吗? 如何理解“师傅领进门,修行靠个人”这句话? 灵犀茶油可靠不? 灵犀茶油这个食用油健康吗? 谁买过灵犀茶油?感觉怎么样? 灵犀茶油厉害吗? 灵犀茶油合格吗?可以添加在宝宝膳食里面吗? 有人知道灵犀茶油吗? 柳体钢笔字帖哪里找? c++ 类 链式调用 怎么在一个类中调用其他类的链表? 怎么给网站导航加调用链接 皮肤状态特别不好,有补救的办法吗? 元旦晚会结束语以及串词 什么是穿孔纸带? 要打穿孔纸,纸张大小设置应是多少? 穿孔打印纸打完一张,下一张还要被卷过半张,还要手动卷回,烦不胜烦,怎么阻止 斑马打印条码机,之前的坏了,换了一个同样的装到电脑上不打印,是否需要重新登_百度问一问 大自然是什么样 惠普黑白激打大家最经常打印的是什么纸张。 千百年来,人们笔下的大自然是什么样的?你心中的大自然和人类之间的关系又是怎么样的? 工程上说的穿孔纸带是什么 怎么样的大自然?填合适的词语 作文大自然.是什么 我想打印帐簿,纸是穿孔连续纸,为什么打出来的看着不对呢?谁会自定义打印的,教教我? 烟草证分几种啊? 烟草专卖品准运证一般分类有哪几种? 听说嘴唇太厚可以变薄,潍坊哪里做的好?