永发信息网

C,C#,C++哪个功能更强大,更实用?

答案:4  悬赏:0  手机版
解决时间 2021-02-28 20:09
C,C#,C++哪个功能更强大,更实用?
最佳答案
C++的设计目标是低级的、与平台无关的面向对象编程语言,C#则是一种高级的面向组件的编程语言。向可管理环境的转变意味着你编程方式思考的重大转变,C#不再处理细微的控制,而是让架构帮助你处理这些重要的问题。例如,在C++中,我们就可以使用new在栈中、堆中、甚至是内存中的某一特定位置创建一个对象。

在.NET的可管理环境中,我们再不用进行那样细微的控制了。在选择了要创建的类型后,它的位置就是固定的了。简单类型(ints、double和long)的对象总是被创建在栈中(除非它们是被包含在其他的对象中),类总是被创建在堆中。我们无法控制对象是创建在堆中哪个位置的,也没有办法得到这个地址,不能将对象放置在内存中的某一特定位置。(当然也有突破这些限制的方法,但那是很另类的方法。)我们再也不能控制对象的生存周期,C#没有destructor。碎片收集程序会将对象所占用的内存进行回收,但这是非显性地进行的。

正是C#的这种结构反映了其基础架构,其中没有多重继承和模板,因为在一个可管理的碎片收集环境中,多重继承是很难高效地实现的。

C# 中的简单类型仅仅是对通用语言运行库(CLR)中类型的简单映射,例如,C#中的int是对System.Int32的映射。C#中的数据类型不是由语言本身决定的,而是由CLR决定的。事实上,如果仍然想在C#中使用在VisualBasic中创建的对象,就必须使自己的编程习惯更符合CLR的规定。

另一方面,可管理的环境和CLR也给我们带来了好处。除了碎片收集和所有.NET语言中统一的数据类型外,它还提供给我们一个功能强大的面向组件的编程语言,无须对后期绑定提供特别的支持,类型发现和后期绑定都是被内置在语言中的。属性是C#语言中的第一类的成员,事件和代理也是。

可管理环境最主要的优点是.NETFramework。尽管在所有的.NET语文中都可以使用这种框架,但C#可以更好地使用.NET框架中丰富的类、接口和对象。

Traps

C# 看起来与C++非常相似,这使得我们在由C++转向C#时比较轻松,但其中也有一些容易出错的地方。在C++中编写得非常漂亮的代码,在C#中会不能通过编译,甚至会出现意想不到的结果。C#与C++之间在语法上的变化并不大,编译器能够发现这二者之间大部分的差异,我在这里就不再多费笔墨了,在这里我介绍几个容易出问题的比较重要的变化:

引用类型和值类型

在C#中,值类型和引用类型数据是有区别的。简单类型(int、long、double等)和结构属于值类型数据,类和对象属于引用类型数据。除非是包含在引用类型的变量中,与在C++中一样,值类型变量的值存储在栈中。引用类型的变量也存储在栈中,但它的值是一个存储在堆中的对象的地址,这一点也与C++类似。值类型变量是将自己的值传递给方法,而引用类型变量则将自己的指针传递给方法。

结构

C#中的结构与C++中有非常明显的区别。在C++中,结构更象是类,除了缺省的继承外,其缺省的访问权限是public而不是private。在C#中,结构与类截然不同,它是用来封装轻型对象的,是值类型的数据类型,在传递时传送的是变量的值,而不是其地址。此外,它们也有一些不适用于类的限制,例如,它是不能继承的,也没有除System.ValueType之外的基本类。结构还不能定义一个缺省的constructor。

另一方面,由于结构比类的效率要高,因此它非常适合于创建轻型对象。因此,如果它的缺点对你的软件没有影响,使用结构比使用类效率要高得多,尤其是对于小对象而言。
全部回答
这三种语言中,用得最广泛的是绝对是C#,起码国内是这个情况,尤其在北方,C++用的人不多,主要在一些桌面程序和底层开发中使用。C语言主要做嵌入式开发,另外操作系统一般都是C语言写的,因此很重要。
恩,个人认为,在这三种语言中,现在最使用的还是c++,c#好像不如java用处广,c是最基础的,通常用来做嵌入式和一些很复杂的软件了,通常很少人能用好c。不过要是学习,c是c++和c#的基础,通常只有学会了c才能学c++和c#,他们是c演化出来的面向对象语言,基本的语法和c都很像。
C语言和C++语言主要是用来开发一些和硬件有多重交流的软件,比如说游戏的脚本,而C#无疑是目前国内使用面积最广的语言之一,看你是想做些什么,如果想做嵌入式开发或者游戏,那C++是你不二的选择,如果以后想做一些应用软件和ASP.NET(使用C#作为脚本),那C#就是你不二的选择,C语言已经可以无视其存在了,任何语言都可以作为编程入门语言,不一定需要使用C语言来入门!
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
云流量怎么用
【画山绣水】画山绣水用了什么的修辞手法它的
不含碘的食物
茗珠陶瓷怎么去啊,有知道地址的么
快乐大本营关晓彤和马思纯那一期的口哨声
淘宝店铺手机端 如何添加承接页
泰国化妆品保质期40l402什么意思
信佛的人是不是不能卖熟食
奥迪木门在哪里啊,我有事要去这个地方
海绵发泡会产生哪些有机废气?
啥尔滨群力民生尚都煤气费月在哪交
安踏集团锐力体育用品有限公司地址在哪,我要
有本小说的主角好像叫叶枫,特种兵内容简介是
衢州市固体废物监督管理中心这个地址在什么地
成语人钱什么鸡
推荐资讯
我现在30了,可以学软件编程吗
求解,为什么我骑山地车会腰酸背痛,什么原因
多用电表测量电压和电流时需要估读吗
估算,312x52约等于1550还是1500
请问这个手表中间的三个圈是干什么用的?然后
芜湖绿地镜湖世纪城海顿公馆离火车道有多远,
绿芳苑这个地址在什么地方,我要处理点事
一部美国电影,开始画面是一个女孩微笑,可女
丰田锐志白天仪表不清楚,有没有地方可以调亮
D252主板B2触摸一体机的双屏怎么设置
请教OpenGL的4种阴影算法
W7如何连接局域网打印机
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?