永发信息网

c++为什么需要虚函数表

答案:2  悬赏:80  手机版
解决时间 2021-03-18 19:14
  • 提问者网友:雨不眠的下
  • 2021-03-18 02:09
c++为什么需要虚函数表
最佳答案
  • 五星知识达人网友:孤独的牧羊人
  • 2021-03-18 02:27
楼上说的不全吧,只有纯虚类才无法实例化。
至于不能为虚函数,我的理解是:
构造函数是给类初始化调用的,明白点说就是给类中的成员变量赋初始值。
如果构造函数是虚函数,意味着肯能被重载,也就是在子类实例化的时候给父类初始化时是调用子类重载的函数,先不管合不合法,要想初始化父类,就需呀知道父类的成员变量或函数,这样岂不是父类向子类完全暴露了自己的成员?这不合乎数据封装的概念吧。
当然,这只是我个人理解,当然ANSI最新的标准貌似构造函数是可以为虚的,不过对于现在我来看的话,感觉没什么意思。
全部回答
  • 1楼网友:鸽屿
  • 2021-03-18 03:05
调用构造函数时,虚表才建立,构造函数是虚函数,谁建立虚表啊.... 析构函数之所以搞成虚函数,因为你可能采用基类指针动态申请派生类对象, 用完用delete吧,这时 将才产生一个问题,基类指针指向何种对象?如果是虚函数,根据多态, 直接delete,会根据对象,调用析构,即可完美解决,否则需要根据类型转换,很是麻烦啊... 所以,总结一下: 1,构造函数一定不要是虚函数, 2,一个类要被继承派生时,析构函数定义成虚函数是极佳选择。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯