`
JasonShieh
  • 浏览: 522275 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

C++和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、驱动。
分享到:
评论

相关推荐

    C++和C#的区别

    详细而又清晰的讲解C++和C#的区别 一看即明白了

    C++转C#工具

    便捷的C++转C#工具,用于将完整的C++项目转换成C#项目

    C++和C#相互调用COM组件

    网文 C++和C#相互调用COM组件举例等。

    C++ 与 C# 数据类型对照(全)

    本人慢慢在网上各地收集及自己验证后总结的C/C++和C#的数据类型对照.没有完全 验证..组织部 类型太多了..要怪就怪C/C++的type define这个该死的语法 吧...

    C++和C#的类型转换

    C++和C#的类型转换,全面地列出了C++和C#中对应的类型,因为在调用dll中经常地在两种语言之间转换数据类型。

    C/C++和C#混合编程

    这是对C/C++代码 封装 可以用C#调用。事实上,C系列中还存在一种语言叫做托管C++,这种语言语法上和C++几乎一样,但是却和C#一样编译成为微软中间语言,这样就可以和C#良好地通信,即可以在c#中使用托管C++类

    C#与C++的主要区别

    "C#与C++的主要区别" C#和C++是两种不同的编程语言,它们之间存在着许多不同之处。本文将对C#和C++进行比较,讨论它们的主要区别。 首先,C#是一种 moderne object-oriented programming language,专门为 Windows...

    C++调用C#的DLL实例程序

    C++调用C#的DLL实例程序,压缩包中包含部分程序说明,很小的几行代码,但是C++调用C#的DLL目的已经达到。

    c++调用C# COM 参数是结构体数组

    C++ 调用 C# COM 参数是结构体数组是一种复杂的编程技术,涉及到多种编程语言和技术。下面我们将对这个主题进行深入探讨。 C# COM 组件 在 C# 中,COM 组件是使用 ComVisible 特性来公开的。COM 组件可以被其他...

    C++ 与C#之间的指针参数传递传参参考

    C++ 与C#之间的指针参数传递,实现无限量数据的传递,轻松无压力,方便在C++里面获取或者从C#传递数据到C++的动态库调用内。

    C++调用C#DLL例子

    用C++调用C#实例代码,C#封装为DLL。

    c++和c#数据类型对照

    c++和c#数据类型对照 c++ c# 数据类型 DLL COM 主要是C++与C#互调时的类型对照

    C++和C#的却别与各自的用法

    C# 是纯面向对象语言,C++ 除了面向对象,也面向过程。C# 支持垃圾收集,C++ 不支持垃圾收集。C#需要虚拟机器,C++ 不需要虚拟机器。C# 的执行档是中间码,叫做 managed code,透过 NGWS Runtime 来执行。除了 C#,...

    C#调用C++.C#调用C++.C#调用C++.C#调用C++.C#调用C++.C#调用C++.C#调用C++.

    C#调用C++.C#调用C++.C#调用C++.C#调用C++.C#调用C++.C#调用C++.C#调用C++.C#调用C++.C#调用C++.C#调用C++.C#调用C++.

    C++调用C#的DLL程序实现方法

    比如使用C++调用C#的DLL。 SwfDotNet是.net下输出flash的类库。SwfDotNet是C#编写的,作者的C#水平,真是令我佩服。这是个特别好的读写Swf文件的库。但是,我要用在C++项目中,怎么让C++调用C#的DLL呢。今天一上午都...

    C++数据类型与C#数据类型之间的对应关系

    C++数据类型与C#数据类型之间的对应关系是一个非常重要的知识点,特别是在进行C++和C#之间的交互操作时。下面我们将详细介绍C++数据类型与C#数据类型之间的对应关系。 一、整数类型 在C++中,我们有多种整数类型,...

    MessagePack在C++和C#间传输数据

    完整的工程代码,在VS2015上编译通过,并且可以运行,实现MessagePack在C++和C#间传输数据

    c++和C#数据类型对比

    c++和C#数据类型对比

    c++转C#工具

    c++转C#工具,c++转C#工具.c++转C#工具

    C++ to C# Converter.exe

    C++转换成C#工具

Global site tag (gtag.js) - Google Analytics