以文本方式查看主题 - 中文XML论坛 - 专业的XML技术讨论区 (http://bbs.xml.org.cn/index.asp) -- 『 C/C++编程思想 』 (http://bbs.xml.org.cn/list.asp?boardid=61) ---- 晕菜求助:C#、C语言、C++之间到底是什么关系呀? (http://bbs.xml.org.cn/dispbbs.asp?boardid=61&rootid=&id=50708) |
-- 作者:winhaha -- 发布时间:7/30/2007 6:27:00 PM -- 晕菜求助:C#、C语言、C++之间到底是什么关系呀? C#、C语言、C++之间到底是什么关系呀? |
-- 作者:卷积内核 -- 发布时间:7/31/2007 8:20:00 AM -- 基本语法类似,所用写程序的工具不同。 |
-- 作者:一分之千 -- 发布时间:7/31/2007 10:55:00 AM -- 有好多相似之处,但是不要把他们看作是有什么关系,最好是当作不同的语言来学。他们并不存在谁是谁的升级版 谁基于谁的关系。 以下转来的 1,全新的程序程序思维,C 语言是面向过程的,而 C++ 是面向对象的。
C# 与 C++ 比较的话,最重要的特性就是 C# 是一种完全面向对象的语言,而 C++ 不是,另外 C++ 是基于 IL 中间语言和 .NET Framework CLR 的,在可移植性,可维护性 和强壮性都比 C++ 有很大的改进 C# 的设计目标是用来开发快速稳定可扩展的应用程序,当然也可以通过 Interop 和 Pinvoke 完成一些底层操作,但是对于一些和底层系统相关很紧密的程序(譬如说驱动程序),还是建议用 C++ 来写 C++ 不允许在一个构造函数中调用另外一个构造函数(称为委派构造函数调用),而 C# 则允许。委派构造函数调用语法上非常自然和易懂,事实上, C++ 不提供这一特性并不是出于语法上的考虑,而是出于资源管理的考虑(这样的事情对 C++ 来说还有很多很多)。 C++ 的构造函数用于分配资源,而析构函数用于释放资源,构造函数和析构函数调用必须匹配,否则就打破了 C++ 的基本规则。如果允许委派构造函数调用,则显然会打破这一规则——构造函数被执行两次,而析构函数只执行一次。当然,对一些类,例如前面的那个 Point 来说这不是个问题,但是从语言机制的角度讲这个特性可能属于“危险”的特性。注:在最新的 C++ 标准提议草案中,Herb 等人有一个关于允许委派构造函数调用的提案,当然这很大程度上是为了方便 C++ /CLI 绑定。 在 C++ 构造函数中,虚函数调用会被编译器自动转为普通函数调用,而在 C# 构造函数中允许进行虚函数调用。 C++ 这样处理自然有它的原因——在 C++ 中,构造函数执行完成后对象才初始化好,对于多态对象来说,也就意味着构造函数在背后执行了很重要的一件事情——初始化对象的虚函数表。 如果我们在基类的构造函数中调用了虚函数,则因为此时对象的虚函数表仍旧是基类的虚函数表,所以无法进行正确的虚函数调用。 基本上,这些就是两者之间的区别 |
-- 作者:taoyx -- 发布时间:8/9/2007 11:00:00 AM -- 经典 |
-- 作者:NingBo -- 发布时间:8/16/2007 3:36:00 PM -- 简单地说,c是面向过程的程序设计语言,很早就出现了,70年代就开始了,同时期的还有一个经典就是pascal语言. 后来面向对象出现了,于是出现c++,实现了面向对象的3要素,封装继承多态. 但是c和c++都有一个共同的问题就是内存问题,而且实际工作中一些应用项目用c和c++开发周期太长.于是java出现了.简单且内存不容易出错, ms为了跟java竞争,引出c#(sharp),将c++用java的思想重搞了一遍. |
-- 作者:motfar999 -- 发布时间:9/4/2007 9:07:00 AM -- 新手 |
W 3 C h i n a ( since 2003 ) 旗 下 站 点 苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》 |
78.125ms |