首页 > 其他 > 详细

父类构造方法中调用虚方法

时间:2014-03-07 05:29:42      阅读:484      评论:0      收藏:0      [点我收藏+]

1、在C++中,明确指出,不要在父类构造方法调用虚方法,为啥?

  因为,构造子类对象,首先调用父类构造方法(初始化列表,然后构造方法内代码),然后子类构造方法(初始化列表,然后构造方法内代码),在父类构造方法中,还没有子类的成分,也就是说,当前本质上还是父类对象。因此,调用的方法还是父类方法,不会产生预期的多态行为。

2、但是,最近在C#当中发现一个很奇怪的现象:父类构造方法调用虚方法,也会产生多态的行为。确实让人奇怪,只能说编程语言细节太多。C#是如何做到的呢?

  自己猜测,可能是在父类构造方法之前,完成了对虚方法表的整体拷贝,并且置换为重写后的方法。

父类构造方法中调用虚方法,布布扣,bubuko.com

父类构造方法中调用虚方法

原文:http://www.cnblogs.com/nzbbody/p/3585302.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!