c#多态性 与 C++多态性 的区别

wangzivc2004 2007-05-07 11:04:19
昨天突然发现c#,和c++俩种语言在多态性的 实现机制 上面的细微差别。

如果是C++,在基类的构造函数里面调用虚函数的话,会调用本类的不会调用派生类的,原因是基类构造的时候,虚表还没有被派生类继承和修改。

但如果是C#,那就不同了,在基类的构造函数里面照样调用派生类的。不知道有谁知道c#它的这种底层机制是怎样的?
...全文
352 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
lw065 2007-11-21
  • 打赏
  • 举报
回复
学习了
Ivony 2007-05-18
  • 打赏
  • 举报
回复
是这样的,C++会先初始化基类,然后逐级初始化派生类型。C#则是一开始就把对象创建好了,然后逐个调用构造函数。本质区别在于C++的构造函数的任务是初始化,C#则不然,C#的类型的任何字段不必初始化,均有默认值,所以C#在调用构造函数之前就已经将对象初始化完毕了。
guojh021 2007-05-18
  • 打赏
  • 举报
回复
关注一下
windstore 2007-05-07
  • 打赏
  • 举报
回复
不知道, mark!关注中。。。
amandag 2007-05-07
  • 打赏
  • 举报
回复
所以在C#和Java中,我们有个强烈建议

构造函数里不要做与初始化对象无关的事情

构造对象自身的时候就想孩子的事是不是太早了?

110,566

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧