CC++C#三者区别.docx
- 文档编号:24450385
- 上传时间:2023-05-27
- 格式:DOCX
- 页数:25
- 大小:150.74KB
CC++C#三者区别.docx
《CC++C#三者区别.docx》由会员分享,可在线阅读,更多相关《CC++C#三者区别.docx(25页珍藏版)》请在冰豆网上搜索。
CC++C#三者区别
C,C++,C#三者区别
继承关系是C->C++->C#C++完全向C兼容,C程序几乎不用修改即可在C++的编译器上运行.C++也称为带类的C,在C的基础上增加了许多面向对象的概念.虽然是C的扩展,但并不意味着C功能不如C++,最牛的操作系统是用C写的(不是C++哦).
C#是微软弄的一个东东,继承了C和C++的许多东西,但和两者基本上已完全不一样了.你可以把它当作一种全新的语言来学.
C语言是一种结构化编程语言。
它层次清晰,便于按模块化方式组织程序,易于调试和维护。
C语言的表现能力和处理能力极强。
它不仅具有丰富的运算符和数据类型,便于实现各类复杂的数据结构。
它还可以直接访问内存的物理地址,进行位(bit)一级的操作。
由于C语言实现了对硬件的编程操作,因此C语言集高级语言和低级语言的功能于一体。
既可用于系统软件的开发,也适合于应用软件的开发。
此外,C语言还具有效率高,可移植性强等特点。
因此广泛地移植到了各类各型计算机上,从而形成了多种版本的C语言。
下面是C语言教程的地址,想学的话可以去看看。
http:
//www.bc-
C++是在C的基础上改进后的一种编程语言,主要是增添了许多新的功能,难度也比C大,和C一样侧重于计算机底层操作,也就是系统软件的开发。
C#是在C++的基础上再一次改进后的编程语言,相比C++而言难度有所减小(微软是这么说的),侧重于网络和数据库编程。
这3种都是编程语言,语法基本上是一样的,不过具体的内容差别还是挺大的。
VC++是一种编程软件,就相当于一个作业本,你学习了C++语言以后,就需要把这种编程语言写在一个作业本上,也就是写在VC这种编程软件上,来实现你需要的效果。
C++是C语言的升级版
c是c++的子集,c是面向过程的,c++是面向对象的
By:
zhuzhumm
C语言与C++的区别有很多:
1,全新的程序程序思维,C语言是面向过程的,而C++是面向对象的。
2,C语言有标准的函数库,它们松散的,只是把功能相同的函数放在一个头文件中;而C++对于大多数的函数都是有集成的很紧密,特别是C语言中没有的C++中的API是对Window系统的大多数API有机的组合,是一个集体。
但你也可能单独调用API。
3,特别是C++中的图形处理,它和语言的图形有很大的区别。
C语言中的图形处理函数基本上是不能用在中C++中的。
C语言标准中不包括图形处理。
4,C和C++中都有结构的概念,但是在C语言中结构只有成员变量,而没成员方法,而在C++中结构中,它可以有自己的成员变量和成员函数。
但是在C语言中结构的成员是公共的,什么想访问它的都可以访问;而在VC++中它没有加限定符的为私有的。
4,C语言可以写很多方面的程序,但是C++可以写得更多更好,C++可以写基于DOSr程序,写DLL,写控件,写系统。
5,C语言对程序的文件的组织是松散的,几乎是全要程序处理;而C++对文件的组织是以工程,各文件分类明确。
6,C++中的IDE很智能,和VB一样,有的功能可能比VB还强。
7,C++对可以自动生成你想要的程序结构使你可以省了很多时间。
有很多可用的工具如加入MFC中的类的时候,加入变量的时候等等。
8,C++中的附加工具也有很多,可以进行系统的分析,可以查看API;可以查看控件。
9,调试功能强大,并且方法多样。
鉴于当下形势,如果要学的话就学C#
C#与C++比较的话,最重要的特性就是C#是一种完全面向对象的语言,而C++不是,另外C#是基于IL中间语言和.NETFrameworkCLR的,在可移植性,可维护性和强壮性都比C++有很大的改进
C#的设计目标是用来开发快速稳定可扩展的应用程序,当然也可以通过Interop和Pinvoke完成一些底层操作,但是对于一些和底层系统相关很紧密的程序(譬如说驱动程序),还是建议用C++来写
C++不允许在一个构造函数中调用另外一个构造函数(称为委派构造函数调用),而C#则允许。
委派构造函数调用语法上非常自然和易懂,事实上,C++不提供这一特性并不是出于语法上的考虑,而是出于资源管理的考虑(这样的事情对C++来说还有很多很多)。
C++的构造函数用于分配资源,而析构函数用于释放资源,构造函数和析构函数调用必须匹配,否则就打破了C++的基本规则。
如果允许委派构造函数调用,则显然会打破这一规则——构造函数被执行两次,而析构函数只执行一次。
当然,对一些类,例如前面的那个Point来说这不是个问题,但是从语言机制的角度讲这个特性可能属于“危险”的特性。
注:
在最新的C++标准提议草案中,Herb等人有一个关于允许委派构造函数调用的提案,当然这很大程度上是为了方便C++/CLI绑定。
在C++构造函数中,虚函数调用会被编译器自动转为普通函数调用,而在C#构造函数中允许进行虚函数调用。
C++这样处理自然有它的原因——在C++中,构造函数执行完成后对象才初始化好,对于多态对象来说,也就意味着构造函数在背后执行了很重要的一件事情——初始化对象的虚函数表。
如果我们在基类的构造函数中调用了虚函数,则因为此时对象的虚函数表仍旧是基类的虚函数表,所以无法进行正确的虚函数调用。
也就是这个原因,通常我们应该避免在构造函数中调用虚函数,因为它违背了虚函数的语义。
而在C#中,在对象的构造函数执行之前对象的类型信息就已经初始化好了,所以可以进行正常的虚函数调用。
基本上,这些就是两者之间的区别
2011-09-1908:
43:
18苏仁(征服世界吧牛宝宝们!
)(近墨者黑)
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++的一个自洽子集,也具有强大的功能,同样值得学习。
几点学习建议:
1.基本概念很重要。
无论学C,还是学C++,基本概念都是第一位的,也是比较困难的,但只有把握了基本概念才能把握整体脉络,才能居高临下。
2.C是C++的子集,它的基本概念和设计方法相对比较容易理解,初学者可从它入手。
3.如果要学好C++,建议初学者最好别在如VC,BCB平台下写程序,那种自动化的代码生成,花花绿绿的界面,会让你手足无措。
最好先找一片空地(unix,dos),从头做起,写几个大点的程序,数个回合,再到VC,BCB下看看,你会轻松得很。
在我看来,学好C/C++是成为VC,BCB高手的必由之路。
4.不要妄想速成,必须得一个byte,一个bit的去抠,尽量搞清楚每一个问题。
5.几本好书:
机械工业出版社的那套“计算机科学丛书”从C到C++,到面向对象设计,一应俱全,都TMD是经典中的经典,而且价格公道,童叟无欺。
国内也有几本好书,谭老爷子的书好倒是好,就是程序错误太多。
强烈推荐清华周之英的《现代软件工程》(上、中、下),它是我所见到的国内少有的一本好书,精华的精华,要点的要点,细细品来,至少也属降龙十八掌等级的东东。
如果还是有人想学习C/C++的话,有一些小问题我还是乐意解答的.但是我认为学习C/C++是不重要的,重要的是如何锻炼你的思路.不要找一些连自己都搞不清的问题去做.
我认为虽然"潭浩强"同志有骗钱的嫌疑(我手头就有一本几乎一模一样的英文书),但是,是他把这本入门手册引入中国,使无数程序员了解了C语言,我想他的功劳也是不可磨灭的.在
当你基本能够掌握了上一本书中例子后,你就要自己找一些例子程序去看.开始可能是看不懂,但是只要努力就没有什么问题.当你看过几个较大的例子之后,你会茅塞顿开,(大量阅读例子程序是学习C/C++的捷径).你会发现,你的水平有了显著的提高.你看的例子越多,你对Windows/DOS了解的越多.最好能够再看一些关于系统知识的书籍.他会对你的编程很有帮助的.
这是我学习C/C++的一点心得,希望对没有被我吓到而要继续学习C/C++的朋友们有一些帮助.免得有些同志说我破坏中国软件人才的发展.
在最后我祝愿所有坚持学习C/C++的朋友们成功!
同时感谢阅读过我文章的同志们.
想学好C++,非学C不可!
!
!
今天我这么肯定的在这里讲这番话,是不想初学者陷入到语言越新越好的误区,本来这个题目就不是很严谨,但是我有几句话必须讲讲,为C平反!
!
C++与C有什么不同呢?
我们现在一步步地来分析一下
一、类,类我并不说它有什么不好,但是对于初学者,它是一个累赘。
类的封装使得初学者对程序产生厌倦,感到不适和麻烦。
二、引用,引用是C++中最臭屁的东西了,最好尽量不要用它,我就是从来不用引用,除非万不得已。
引用对于初学者就更容易产生混淆,不知道哪个是引用,哪个是变量。
三、函数的重载,初学者学函数的重载好像没什么坏处,但是,这会使初学者潜意识里对C语言的变量类型的重要性产生淡化,要记住C语言是对变量类型最敏感了的,变量的类型在C语言里的重要性是不言而喻的。
四、流操作符,和上面同样的道理,使得对变量类型的重要性产生淡化,况且,cin这个东东有点儿不怎么方便,有时会产生使初学者莫名其妙的结果。
五、操作符重载,典型的高级应用,初学者可能根本用不着,这个东东会让他们觉得C++很难,门槛高,看不懂…………。
六、继承,以及虚函数,典型的模仿四不象,这种狗屁东西除了看起来深奥,实用价值很低………………。
我怎么可能把某个类的类型的指针去指向另一个不同类型但是是继承关系的类,来实现什么动态联编,晕…………
………………还有些东东我就不发表评论了,如:
new,delete操作符等…………
七、误区:
以问答形式:
问:
C++是面向对象化的而C是面向过程化的?
答:
第二对,第一问错,C++并非完全面向对象化,真正的面向对象化的语言恐怕只有Java才算得上。
问:
C++能实现C所不能的功能吗?
答:
至少我还没有发现……
问:
学了C再学C++有障碍吗?
比如程序设计思想……
答:
至少我还没有看见谁有此症状。
问:
学了C再学C++又要重头开始吗?
答:
不,C++下可以实现C语言的一切功能。
问:
我学完了C一定还要学C++才能编程吗?
答:
完全没必要。
问:
C++比C好在哪里?
答:
更加符合软件工程学
问:
学完了C再学C++是不是很容易?
答:
那要看你是不是真正的学完了C语言,我从C到C++就一个星期的睡觉前的时间看两眼书,然后就大彻大悟。
再跑到这里来发表些狗屁文章了。
最近在网上看到了很多人的学习方法,本人非常不赞同。
很多人都想一口吃个胖子,要学就想学最新的,好象没有人愿意再去学那些老的,旧的编程语言了。
但你们能学的懂吗?
不学TC2。
0等那些较早的优秀编程语言,你们能理解的了VC6。
0?
如果你真的能,我宁愿做你的徒弟!
真是奇怪,那些最基本的语言都不懂的人,怎么可能去理解那些最新的编程语言?
我学编程有三年了吧。
成绩也不算多,只有一个计算机四级证和一个高程证,但我觉得我在学VC的时候还有很多的不明白的地方。
没有人来教我,只能靠我自己,包括所有的成绩在内,我都是靠自己,我从不报班。
学VC的半年多来,我想我已经基本入门,但依然有很多的困惑。
刚开始学VC,就面临一个项目,我真的犹如笨蛋一般,四处吓摸,毫无头绪,最后勉勉强强才算做个差不多。
学好VC再去学其他的高级WINDOWS编程,我想那真是轻而易举,毕竟WINDOWS的内部的很多东西都能直接被VC调用,你首先就可以对WINDOWS有个全新的认识,再去学其他的语言岂能不简单?
我的感觉是,面向过程和面向对象,其实都很重要的,在VC里也依然需要面向过程,很多东西都是一环扣一环,没有面向过程的思想,怎么可能去编程呢?
建议多去看看有关WINDOWS编程的书,但多数都是比较老的书呦!
我依然记得当年整天进行TC编程的辛苦,但我依然很怀念当年的劳动付出,毕竟我获得了我想获得的一切——编程思想。
我觉得一个好的编程思想,绝对比你去学一门计算机语言好重要的多。
要形成自己的编程风格。
一个好的编程思想在你的头脑中一旦形成,学习什么语言都会很轻而易举,因为此时的你不在是简简单单的学习,而是来验证!
回应删除举报广告
2011-09-1922:
20:
13蛋疼的青椒(我是你的。
爱你的脑瘫。
)
真是有心的总结
回应删除举报广告
2011-09-2000:
07:
37[已注销]
强!
!
肿么没有推荐啊?
回应删除举报广告
2011-09-2000:
10:
30[已注销]
额,,,这问题是自动生成的,不是我写的。
。
orz
回应删除举报广告
2011-09-2000:
17:
380xFAN(SALIGIA)
"C#与C++比较的话,最重要的特性就是C#是一种完全面向对象的语言,而C++不是"
===========================
bullshit
回应删除举报广告
2011-09-2000:
19:
41荒荒唐唐(荒荒唐唐梦一场)
最近在学习objective-c,其实说白了,都是C
回应删除举报广告
2011-11-0917:
46:
25中之精神
写得好
回应删除举报广告
2011-11-0918:
22:
59suede(庐山烟雨浙江潮)
如果我们在基类的构造函数中调用了虚函数,则因为此时对象的虚函数表仍旧是基类的虚函数表,所以无法进行正确的虚函数调用。
---
虚函数调用不一定走vtable的,譬如ctor里。
为什么这个组会贴这个?
这到底是什么组啊!
回应删除举报广告
2011-11-1014:
58:
10奋斗的蜗牛(一个人要像一支队伍!
)
机械工业出版社的那套“计算机科学丛书”从C到C++,到面向对象设计,一应俱全,都TMD是经典中的经典,而且价格公道,童叟无欺。
国内也有几本好书,谭老爷子的书好倒是好,就是程序错误太多。
强烈推荐清华周之英的《现代软件工程》(上、中、下),它是我所见到的国内少有的一本好书,精华的精华,要点的要点,细细品来,至少也属降龙十八掌等级的东东
回应删除举报广告
2011-11-1118:
31:
52狂奔的蜗牛(曾梦想仗剑走天涯)
M
回应删除举报广告
2011-11-1121:
06:
40darkofday(纯净太可贵,但愿求得通透。
)
楼主还没能体会到C++的面向对象的优点,还没有深刻体会到面向对象在工程学方面的优势。
用活面向对象是很难的,远不是上面说的个把星期。
C简单精确,C++灵活多变,各有利弊。
语言,说到底是个工具,计算机体系结构,操作系统,算法,工程学这些更有趣。
如果,要推荐学语言,我会推荐C和Python(ruby再等个几年)。
回应删除举报广告
2011-11-1121:
23:
08[已注销]
C++虽然是C的扩展,但并不意味着C功能不如C++
===============================
20年前的C++这么说可能还靠谱,现在的C++和C已经非常不一样了,甚至很难说C++是C的扩展了。
回应删除举报广告
2011-11-1121:
39:
11不留。
(凡所有相,皆是虚妄。
)
M
回应删除举报广告
2011-11-1121:
40:
33心灯(点亮了)
CC++C#还是C++最牛逼吧
回应删除举报广告
2011-11-1121:
40:
51帅哥(头像即真相美女你们爱我吗)
我一直对搞计算机搞编程的人看成神!
高考数学60文科男敬上····
回应删除举报广告
2011-11-1121:
44:
02唐尸三摆手(我不说话,我就吠吠)
m
回应删除举报广告
2011-11-1121:
53:
39暱铭(千万别用农行的网银,就是骗钱!
)
“面向对象”在编程范式的发展史中是个迷思,鼓吹这种思想的人中没有多少真正透彻理解什么叫“面向对象”。
C++发展到今天,主打特性是泛型,而不是面向对象。
C++0x新加入的语言特性中很大一部分是为泛型编程开辟方便的。
早期的C++面向对象实践中出现了很多复杂而笨拙的代码库,例如对初学者贻害很深的MFC,甚至出现了误入歧途的“设计模式”这类技术(C++作为一种强类型语言,在运行时多态这方面有先天不足,只有泛型技术来实现静多态才能克服这个缺点,然而泛型技术被发明之前C++程序员往往要花很大力气设计各种技巧来克服设计上的困难,以至后来把这些技巧归纳成“设计模式”)。
作为兼顾运行效率和生产力的语言C++在一定时期内仍然占有不可取代的地位。
未来C++应用领域回朝两个方向发展:
一是以泛型、模板元编程等高级特性为基础的高复用性的库的开发,如boost,注重高效和大范围应用中的工业强度;另一个方向是非复用性的一般应用开发,将主要使用plainC风格,降低代码的复杂性,由于有强大功能的库的支持,上层应用的编码将可以非常简洁。
回应删除举报广告
2011-11-1121:
55:
51大盗贼(走投无路)
外行怎么学好呢?
请问下ls
回应删除举报广告
2011-11-1122:
04:
08暱铭(千万别用农行的网银,就是骗钱!
)
C#跟C/C++根本不是一个等级上的语言,C#是微软专门为.net平台定制的语言,是一种虚拟机语言(因此和本机代码的C/C++/D有本质区别),是Java的竞争者。
C++是一种开放语言标准,全世界各组织和企业有广泛实现和变种,相比之下,C#离不开.net平台,而.net离不开windows(这点比不上Java),而windows离不开微软的支持(这点比不上Linux这种开源操作系统)。
回应删除举报广告
2011-11-1122:
13:
16暱铭(千万别用农行的网银,就是骗钱!
)
@大盗贼,有很多针对初学者的书籍,最经典的一本是《C++Primer》(
回应删除举报广告
2011-11-1122:
17:
11大盗贼(走投无路)
谢谢
回应删除举报广告
2011-11-1122:
20:
25暱铭(千万别用农行的网银,就是骗钱!
)
忘了这本《C++程序设计原理与实践》(
回应删除举报广告
2011-11-1219:
59:
23咱是个妞
m
回应删除举报广告
2011-11-1220:
46:
49文化公民
C#。
。
。
是一种虚拟机语言(因此和本机代码的C/C++/D有本质区别):
这个说法有问题,C#只是一种语言,它编译成中间代码还是本机代码是由编译器决定的,如果你想编译成本机代码也是可以的。
C#离不开.net平台,而.net离不开windows:
这两个也不完全对,C#用第三方工具可以编译成本机代码从而离开.NET平台。
.NET在Linux有Mono可以部分支持。
回应删除举报广告
2011-11-1221:
08:
38Patrik(。
。
)
m一个
回应删除举报广告
2011-11-1221:
23:
49H.L.真的要闭关(闭关80天.)
啊啊啊啊啊激动~~~~~~~
回应删除举报广告
2011-11-1500:
16:
14暱铭(千万别用农行的网银,就是骗钱!
)
@文化公民,当然,C#也能编译成本机代码,C也能变成字节码在虚拟机里跑,但是语言各种特性的设计初衷决定了它的应用范围,C对机器的抽象更接近于硬件的实际情况,这决定了C编译出来的本机代码能高效率的运行,而C#做不到。
总之把C#跟C,C++并列,并且宣称C#是“一脉相承发展的最新成果”,这是微软的过分宣传,对初学者是误导性的。
回应删除举报广告
2011-11-1500:
25:
54暱铭(千万别用农行的网银,就是骗钱!
)
对C#一个更中肯的评价,应该是C++和VB的一个杂交语言。
众所周知,C/C++是高效率的,而VB是微软的一个面向初学者和非专业用户的受欢迎的产品。
在效率和易用性之间取得一个妥协(这个领域过去是Java的长项),于是就出了C#。
有的教程中的说法是:
带有VB味道的C++。
回应删除举报广告
2011-11-1500:
44:
21暱铭(千万别用农行的网银,就是骗钱!
)
和C#同一个系列的语言J#就很悲剧,微软本意想把Java程序员吸引到.net平台来,然而语法相似性提供的便利比不上开发环境和辅助工具差异造成的障碍,从J++到J#发布没几年就黯然淡出了。
另外VS2010中发布的F#是个有意思的语言,在.net中引入函数式编程是个有意义的尝试。
整体来看,“sharp家族”的这几门语言代表了微软在编程语言方面的创新尝试,至于它们在计算机语言发展史上的地位还有待观察。
回应删除举报广告
2011-11-1523:
31:
08达达
学习C++之前,C语言是一个基础。
回应删除举报广告
2011-11-1523:
34:
59米思特睡不醒(大概快熟了)
擦
回应删除举报广告
2011-11-1523:
37:
52小林(.)
c#跟java一类。
回应删除举报广告
2011-11-1523:
39:
20xljutopia(YourTimeIsLimited)
我发现我没走错,寒壁
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- CC C# 区别