C++和C#那个更有前途?

如题所述

我自己力挺C#呵,C++太无聊了。。。 c++在设计之初希望提供先进的面向对象特性,同时提供很好的性能。但是为了保证和以往的程序、开发人员的知识兼容,c++与c语言几乎完全兼容。c语言本身其实就是现代计算机的高级抽象,可以直接访问地址、通过指针可以访问几乎任何内存地址;堆和栈的结构体现等待。当然c++也就具有了这样的特性。随着 c++的逐步发展,generic programming 泛型编程技术和stl标准模板库的引入,c++和c的差异越来越大。基本上c++是为了高效地使用面向对象技术或者泛型技术编写大规模高性能应用程序(往往是一些相对比较底层的应用程序)而设计的。

c#通过底层的虚拟机机制减少了c/c++语言中常常容易发生的内存泄漏和安全性问题,代价是运行速度减慢。同样的由于简化了编程语言的复杂性(c#远远比c++来得简单),大大提高了开发者得效率。另外c#具有.net庞大的类库,这个优势是c++所不具有的。因此c#非常合适开发企业中处理业务的应用程序。同时微软所有的操作系统、服务器程序、桌面端程序都在向.net平台统一。在历史上与次类似的情形(指微软技术)只有在微软从16位平台向32位平台转变的过程中发生过。因此现在.net的转变对开发者来说可能是痛苦的(因为要学习很多新的东西),但也充满了机会。

以下是对他们异同的简单归纳:
(1)编译目标:C++代码经常编译成汇编语言。而C#则编译成中间语言(IL)它与Java的字节代码有些相似。IL随后在通过Iust-In-Time编译进程转换成本机的可执行代码。IL代码将作为一个装配件存储在一个或多个文件中,一个装配件就形成一个单元,IL代码就是在该单元中被打包的,对应于 C++编译器创建的一个DLL或可执行文件。
(2)内存管理:C#将开发人员从记账式的内存管理任务中解放出来,不再需要显式地删除动态分配的给堆的内存,而C++则要这么做,无用存储单元收集器将周期性地清空不再使用的内存,为了使这一功能简便的执行,C#限制了存储在堆栈中变量的使用。对于数据类型的安全性,C#的要求比C++更严格。
(3)指针:C#中指针的运用可能与C++一样,但它只用于已特别标记为应用指针的代码块中。对于大部分的程序,C#依赖VB/Java风格的对类实例的引用,而不需和C++一样频繁地使用指针。
(4)运算符重载:C#中可用来显式重载的运算符比C++要少,很大程度上是因为,C#编译器是运用一些定制的基本操作符重载(如=)来自动计算出组合操作符的重载(如+=)。
(5)库:C++和C#都依赖于扩展库的出现,ANSI C++依赖于标准库,C#依赖于.NET基类。而.NET基类是以单一的继承为基础,而标准库是以继承和模板为基础。ANSI C++的库和语言本身是分离的,C#中则是互相依靠的,关系更为紧密。并且很多C#关键字的执行都依赖于特定的基类,
(6)目标环境:C#是基于GUI的环境下(不仅仅是Windows环境,尽管现在只是在Windows中可用)专门为编程和背景服务(如Web服务)而设计的。这与语言本身无关,而是反映在基类库的设计中。相比较,C++是在命令行用户界面时期被开发的,C#和标准库都不支持GUI元素。在Windows中,C++ 必须直接或间接地依靠Windows API来实现这一支持。
(7)预处理指令:C#包含一些预处理指令,它的语法和C++一样。但C#的预处理指令少得多,因为C#的其它语言特性使得这些指令不再重要。
(8)枚举:C#的枚举比C++中枚举的功能更为广泛。它们在权限范围内的语法结构很成熟,可支持不同的属性与方法。要注意的是,只有当代码编译为本机可执行代码时,这一支持才存在于源代码中。枚举仍是作为基本的数字类型来执行的,所以不会存在性能上的损失。
(9)析构函数—当析构函数被调用后,C#不能保证它的执行除非要除空的是具体的外部源代码,如文件与数据库连接,C#不可以在析构函数中放置代码,而C++则可以。因为无用存储单元收集器清空的是所有动态分配的内存,所以析构函数在C#中没有像在C++中那么重要。有些情况下,仅可能地清空外部源代码是很重要的,C#将执行一个包括Idisposable界面的替换机制。
(10)类与结构:C#正式区分了类(一般用于包含许多方法的大型对象)和结构(一般用于只包含变量集合的小型对象)类和结构的存储方式不同,结构不支持继承。它们还存在一些其它的区别。
作为一种新的语言,C#也拥有一些自己的特性,而这些特性是别的语言所不具备的,让我们来看一看:
委托:C#不支持函数指针。但委托可以实现对应的功能,它把引用以一种特殊的形式封装到方法中。委托可以在方法之间传递,用于调用包含引用的方法。这与 C++指针的工作方式相同。委托的意义在于,它可以合并一个对象引用和一个方法引用。与函数指针不同的是,委托包含了调用类中方法实例的信息。
事件:事件与委托相似,但它支持回调模式。就是当执行一些操作时,客户通知机器,将这些操作通知给它。工作方式与VB相同。
特性:这一概念在VB和COM中应用的很广,C#中也导入了这一概念。一个特性就是类中的一个方法,或者是类中的获取/设置方法。从类的外部来看,它更像是一个字段。可以编写代码:MyFormHeight=400,但不能写为:MyForm.SetHeight(400)。
接口:可以将接口看为是一个抽象的类,其目的是用来定义类同意执行的方法和属性。C#接口与COM接口不同—C#接口是简单的方法列表,而COM接口有其它的相关的特性,如GUIDS,但他们的原理基本相同。C#运用了接口继承的原理,因此,类继承的是函数的定义,而不是执行方式的定义。
属性:C#可以用特性元信息(如属性)来修饰类、方法和参数等。可以在运行时内访问属性,已决定代码的执行。
确定线程:C#的lock语句可支持线程同步(C++不支持线程,必须在代码中通过调用API或其它的类库来实现)
反射:C#中,代码可自动获得已编译的装配件(库和可执行文件)中的类定义的信息。可以编写显示类和方法信息的程序
温馨提示:内容为网友见解,仅供参考
第1个回答  2023-04-26

学C++还是C#好

C#好。 两种语言是有相当多的共同点的,不过在0基础的情况下还是建议有C的基础比较好。 C#隐藏了指标(但并不是不能使用),,而指标的思想对于任何程式设计师都是必要的。学习C语言会让的头脑中内建指标,记忆体分配,递回,演算法设计等重要思想,这些思想使得学习任何语言都非常方便。 C#和C的语法几乎是互通的,只不过C#是完全面向物件的,C是面向过程的。 C#的很多内容都可以用C去对映, 比如委托类似于指向函式的指标, 结构体相当于typedef,类相当于type*, 介面则是一个全新的概念了,这体现著一定的程式设计思想的转换。 当然从头开始学C#也没问题,如果的理解能力够强的话...,或者学到一半回头看看C或C++,也能有助于对C#的理解。

是学C好还是C++还是C#好

C语言是基础,必学,学完之后可以在C++和c#中选,C++更为灵活,难度也大,想要学的熟练,真的要下一番狠功夫了!

学C++好还是学C#好?

学好哪个都行 反正都不难,你都学一点基础知识,看以后用哪个就再自学就行了。

学习c++好 还是c#好

从兴趣爱好方面考虑:
. (vb./ C#)上手容易,用微软的程式设计工具visual studio,傻瓜式入门。
从工作方面考虑:
想去大公司,肯定是java首选。
中小型公司偏向微软的. (vb./C#),国外的情况是这样的,虽然我不知道国内的情况,但想来也是差不多的吧。毕竟从保密性来看,肯定java更有优势。c++就不用考虑了,淘汰的语言。
所以推荐你学c#
先看一下C#的语法,然后再找本书(有例子的)照着做一下。等明白C#的大致思路后,看《.框架程式设计(修订版)》,然后最好多看看MSDN,最后就是多多练习一些小专案!

学C++好呢还是C#好呢?

C#是C++.NET;他们两个既有联络也有区别,C++面向的领域广一些,C#是专门面向网路的C++。我建议你学C++,做Windows的程式用,学JAVA做网路,游戏等用。

c++好还是C#好?

先学C,学会了C再学c++容易些,因为 多数语法规则两者相同,虽然C++是面向物件的,c是面向过程的,但是单单从二者的基本语法差别看,区别不是太大。可以认为C++是C的语法超集,正是这个超集导致了面向物件程式设计。也可以在学了c之后学c#,但是c#是完全面向物件的,你可能一开始不适应。学过c++后,c#就容易理解了

java好还是c#还是c++好

java跨平台,应用更广,但也比较复杂多变,目前是web领域的主流开发语言之一;c#是微软独家的,目前只能在windows.平台上使用,应用面有些限制,但学习相对容易些;c++是经典语言,至今仍然很有生命力,但是入门容易精通难,主要应用在底层设计和图形影象程式设计;所以,选哪个,要看你的应用方向,如暂时只是为了学习,那不妨先学java,难度适中,今后适用面广。

c#和c++有什么不同啊!c++好还是c#好?还是Delphi好?

两款语言之间没有好坏,各自有各自的领域和应用范围。
C#适合网路、资料库程式设计,可以很轻松的完成资料库访问。
C++适合底层程式设计,一般的单机软体都是用C++程式设计的。
Delphi需要执行库,并且Delphi语言已经相当的老了,本人并不推荐使用。
第2个回答  2013-07-30
两种语言的应用场合不一样,不能说哪个更有前途。C++是可以跨平台的编程,不仅可以实现软件编程,也可以做硬件编程。所以如果想做系统编程或硬件编程,建议你学C++;C#是微软推出的,为了解决网络编程和数据库编程的编程语言,如果你想做网络编程或数据库编程,那建议你学C#。
第3个回答  推荐于2018-05-07
这个问题不好正面回答,回答了会遭到楼下的群喷,所以我选择告诉你,各有所长,而且论开发速度的话C#胜于C++,但是C++更接近底层。好吧,再多说就遭喷了。本回答被网友采纳
第4个回答  2013-07-30
不是说哪个更有前途 每个语言都有自己的有点 不能说哪个更有前途 只能说哪个更适合 C++的特点是跨平台 windows linux都可以用 不用安装任何环境就可以执行 而C#是微软开发的 必须基于.net平台才可以 所以再使用的时候会有些麻烦 不过开发相对C++会简单些
相似回答