关注
第一个问题找了一下答案: 为什么构造函数不能是虚函数? 从vptr角度解释 虚函数的调用是通过虚函数表来查找的,而虚函数表由类的实例化对象的vptr指针指向,该指针存放在对象的内部空间中,需要调用构造函数完成初始化。如果构造函数是虚函数,那么调用构造函数就需要去找vptr,但此时vptr还没有初始化! 从多态角度解释 1.虚函数主要是实现多态,在运行时才可以明确调用对象,根据传入的对象类型来调用函数; 2.构造函数是在创建对象时自己主动调用的,不可能通过父类的指针或者引用去调用,那使用虚函数也没有实际意义; 3.调用构造函数时还不能确定对象的真实类型(由于子类会调父类的构造函数); 4.构造函数的作用是提供初始化,在对象生命期仅仅运行一次,不是对象的动态行为,没有必要成为虚函数。
查看原帖
点赞 评论
相关推荐
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 实习,不懂就问 #
3579次浏览 68人参与
# 小米提前批笔试难吗 #
34144次浏览 358人参与
# 现代汽车前瞻技术研发急速编程挑战赛 #
13795次浏览 138人参与
# 26届校招投递进展 #
31957次浏览 247人参与
# 央国企投递记录 #
88205次浏览 1362人参与
# 为了找工作你花了哪些钱? #
28275次浏览 268人参与
# 神州信息工作体验 #
11670次浏览 57人参与
# 来聊聊你目前的求职进展 #
634366次浏览 6747人参与
# 小米硬件提前批进度交流 #
168194次浏览 1523人参与
# 校招第一份工作你干了多久? #
86087次浏览 394人参与
# 外包能不能当跳板? #
34523次浏览 221人参与
# 你觉得专业和学校哪个对薪资影响最大 #
61400次浏览 490人参与
# 设计人的面试记录 #
123531次浏览 1341人参与
# 打工人的精神状态 #
49885次浏览 864人参与
# 硬件人你反向读研了吗 #
42555次浏览 637人参与
# 你今年的保底offer是哪家 #
118490次浏览 538人参与
# 大疆的机械笔试比去年难吗 #
72946次浏览 618人参与
# 怎么评价今年的华为 #
129074次浏览 568人参与
# 如何缓解入职前的焦虑 #
192506次浏览 1340人参与
# 硬件人秋招的第一个offer #
77996次浏览 1149人参与
# 如果中了500万,你会离职吗? #
84394次浏览 651人参与