社区
C#
帖子详情
c#多态性 与 C++多态性 的区别
wangzivc2004
2007-05-07 11:04:19
昨天突然发现c#,和c++俩种语言在多态性的 实现机制 上面的细微差别。
如果是C++,在基类的构造函数里面调用虚函数的话,会调用本类的不会调用派生类的,原因是基类构造的时候,虚表还没有被派生类继承和修改。
但如果是C#,那就不同了,在基类的构造函数里面照样调用派生类的。不知道有谁知道c#它的这种底层机制是怎样的?
...全文
352
5
打赏
收藏
c#多态性 与 C++多态性 的区别
昨天突然发现c#,和c++俩种语言在多态性的 实现机制 上面的细微差别。 如果是C++,在基类的构造函数里面调用虚函数的话,会调用本类的不会调用派生类的,原因是基类构造的时候,虚表还没有被派生类继承和修改。 但如果是C#,那就不同了,在基类的构造函数里面照样调用派生类的。不知道有谁知道c#它的这种底层机制是怎样的?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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中,我们有个强烈建议
构造函数里不要做与初始化对象无关的事情
构造对象自身的时候就想孩子的事是不是太早了?
C#
类的
多态性
详解
第一种:编译时的
多态性
,直接这样说不知道说啥?程序执行过程主要分为三步:编译,链接,运行。...
C#
运行时的
多态性
通过虚方法实现。在类方法声明加上了virtual修饰符,称为虚方法,反之为非虚方法
C#
编程从入门到精通
多态性
;属性;索引指示器。第二部分是本书的重点,精选了大量
C#
实用例程来让读者更深入地理解
C#
,同时这些
C#
例程都是经过专业程序员测试,可以直接实用,从而大大缩短编程时间,提高编程效率,这部分一共有文件访问...
初学及入门
C#
C#
是一门用于开发web服务器,客户端的开发语言。...很多人入门一门编程语言可能会有很多问题,本门课程从自身学习编程语言的基础上讲解
C#
,并且并行比较C,
C++
,java等语言,从而能够更整体理解编程语言入门的方法。
Modern
C#
系列课程(3):现代面向对象的程序设计 (Level 200)
讲 师:俞晖 MSDN 特邀讲师 ...本次课程先简单介绍
C#
程序设计概念,然后将深入到更细致的.NET面向对象的程序设计中:包括了访问控制,对象封装性原理,
C#
中继承的应用,抽象类,重载,
多态性
和接口的知识。
自测试卷5.doc1.简述
C#
、Java和
C++
的比较。 2.已知变量x的初值为24,则表达式x+=x--+=x%=17运算的结果值为( )。
8.如何理解面向对象的
多态性
? 9.有一个泛型类class List<T>{},则正确实例化该泛型类的语句是( )。 A)List t=new List(); B)List t=new List; C)List<T> t=new List(); D)List<int> t=new List();
C#
110,566
社区成员
642,567
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章