C++和C#的区别与联系

语法结构上,C++和C#基本上相同,只有以下方面有所区别:
1、继承:C++支持多继承,C#类只能继承一个基类中的实现但可以实现多个接口。2、数组:声明 C# 数组和声明 C++ 数组的语法不同。在 C# 中,“[]”标记出现在数组类型的后面。3、数据类型:在C++中bool类可以与整型转换,但C#中bool 类型和其他类型(特别是 int)之间没有转换。long 类型:在 C# 中,long 数据类型为 64 位,而在 C++ 中为 32 位。4、struct 类型:在 C# 中,类和结构在语义上不同。struct 是值类型,而 class 是引用类型。5、switch 语句:与 C++ 中的 switch 语句不同,C# 不支持从一个 case 标签贯穿到另一个 case 标签。C++的switch后跟参数必须是int型,而C#却允许string型6、delegate 类型:委托与 C++ 中的函数指针基本相似,但前者具有类型安全,是安全的。
7、C#中所有对象都只能通过关键词“new”来创建,C++的“类名_对象名”方式在C#中变为声明一个引用。
8、异常处理:C#中引入了 finally 语句,这是C++没有的,C++允许抛出任何类型,而C#中规定抛出类型为一个派生于System.Exception的对象。9、C# 运算符:C# 支持其他运算符,如 is 和 typeof。它还引入了某些逻辑运算符的不同功能。10、static 的使用:static方法只能由类名调用,改变static变量。11、C#在构造基类上替代 C++ 初始化列表的方法。12、Main 方法和 C++ 及Java中的 main 函数的声明方式不同,Main而不能用main13、方法参数:C# 支持 ref 和 out 参数,这两个参数取代指针通过引用传递参数。14、在 C# 中只能在unsafe不安全模式下才使用指针。15、在 C# 中以不同的方式执行重载运算符。16、字符串:C# 字符串不同于 C++ 字符串。17、C# 中没有全局方法和全局变量:方法和变量必须包含在类型声明(如 class 或 struct)中。18、C# 中没有头文件和 #include 指令:using 指令用于引用其他未完全限定类型名的命名空间中的类型。19、C# 中的局部变量在初始化前不能使用。20、析构函数:在 C# 中,不能控制析构函数的调用时间,原因是析构函数由垃圾回收器自动调用。
21、构造函数:与 C++ 类似,如果在 C# 中没有提供类构造函数,则为您自动生成默认构造函数。该默认构造函数将所有字段初始化为它们的默认值。22、在 C# 中,方法参数不能有默认值。如果要获得同样的效果,需使用方法重载。

c++在设计之初希望提供先进的面向对象特性,同时提供很好的性能。但是为了保证和以往的程序、开发人员的知识兼容,c++与c语言几乎完全兼容。c语言本身其实就是现代计算机的高级抽象,可以直接访问地址、通过指针可以访问几乎任何内存地址;堆和栈的结构体现等待。当然c++也就具有了这样的特性。随着 c++的逐步发展,generic programming 泛型编程技术和stl标准模板库的引入,c++和c的差异越来越大。基本上c++是为了高效地使用面向对象技术或者泛型技术编写大规模高性能应用程序(往往是一些相对比较底层的应用程序)而设计的。没有什么语言能比C++更加贴近Windows本身了,这一点也是不可否认的。C++更针对计算机的底层,而C#更注重对上层应用程序的支持。 目前绝大多数的大型游戏都是用C++做的,而网络应用、应用软件的半壁江山被C#和JAVA所占领。C#能做的,C++不一定都能做,C++能做的,C#也不一定都好做。
c#通过底层的虚拟机机制减少了c/c++语言中常常容易发生的内存泄漏和安全性问题,代价是运行速度减慢。同样的由于简化了编程语言的复杂性(c#远远比c++来得简单),大大提高了开发者的效率。另外c#具有.net庞大的类库,这个优势是c++所不具有的。因此c#非常合适开发企业中处理业务的应用程序。同时微软所有的操作系统、服务器程序、桌面端程序都在向.net平台统一。在历史上与次类似的情形(指微软技术)只有在微软从16位平台向32位平台转变的过程中发生过。
C# 是纯面向对象语言,C++ 除了面向对象,也面向过程。C# 支持垃圾收集,C++ 不支持垃圾收集。C#需要虚拟机器,C++ 不需要虚拟机器。C# 的执行档是中间码,叫做 managed code,透过 NGWS Runtime 来执行。除了 C#,你也可以用其它程序语言(例如 Visual Basic、C++)来作出 managed code。C# 使用 Platform-Independent Type,C++ 的 type 会受到平台的影响。
C#调用Win32 API的方式繁杂,C++这一点做得比它好。但是,C#强大的网络操作,代码量大大地低于C++,我们抛弃不用Socket,改用WinInet或是MFC中的封装好的网络类,比如CHttpFile,还是没C#简单。C#的傻瓜式的类库操作和面向对象编程的完美特性,确实让其成为了Windows平台上最受欢迎的语言。
C#中不通过Win32 API就那么一种方式,通过System.Diagnostics.Process找到进程,然后Kill之,而C++中,我们完全有无数种选择,如进程内存填0,卸载模块,消息洪水,句柄强制关闭,强制释放它的堆等等,甚至注入进去,内部Raise一个异常,它也就会结束。保护进程,不管内核下还是应用层,C#肯定是做不了的,C++有自己高端的地方,其他语言无法涉足。所以没有用C#做的杀毒软件就不足为奇了。
C#极其简易的界面操作,令人看着很舒服的编码,他有太多的地方,C++根本无法涉足。没人拿C++做Web Services,超级大量的数据,拿垃圾回收基本上为0的C++去做,简直就是自找麻烦。C#的WebForm,和Jsp占据着Web的大片江山,C++不能。C#是一门博大精深的语言,类库强大。C#更加注重于软件工程的应用,各种设计模式的使用,C++则注重于实现功能。
C#的前景是不错的,我个人很看好它,MSDN 杂志每期的文章可能有8成是C#,C++不算很多,微软的重心可能在C#上,希望C#逐渐能取代C++。但是C++会这么容易被取代?不可能。就像一个搞管理的,你让他接管搞开发的人,让他从干一样到同时兼干这二样,会有这么简单么?c++的生命力至少还要7-8年,之后才会渐渐的淡出,但是只要追求自由的人存在,C++就不会消失;只要操作系统一天是用C++写的,C++就不会消失。
开发数据库,倾向于用C#,做Windows底层,我肯定是C++。C#的Linq to Sql让不懂数据库的人都能去操做数据库了,辅助一些第三方类库,能发挥强大的威力。完全取代C++,等操作系统是C#写的,C#能开发系统中的一切组件的时候再说吧,至少现在C#还不能开发IsAPI、驱动。
  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值