c与C++有什么区别

fiwnmm 2011-06-12 12:52:44
请问C与C++具体有什么区别 主要有那些相同的和不相同的地方?????????
...全文
178 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
waxilo1988 2011-06-13
  • 打赏
  • 举报
回复
从机制上:c是面向过程的(但c也可以编写面向对象的程序);c++是面向对象的,提供了类。但是,c++编写面向对象的程序比c容易
从适用的方向:c适合要求代码体积小的,效率高的场合,如嵌入式;c++适合更上层的,复杂的; llinux核心大部分是c写的,因为它是系统软件,效率要求极高。
从名称上也可以看出,c++比c多了+,说明c++是c的超集;那为什么不叫c+而叫c++呢,是因为c++比
c来说扩充的东西太多了,所以就在c后面放上两个+;于是就成了c++
C语言是结构化编程语言,C++是面向对象编程语言。LUPA开源社区 } n*r2C/M8f
C++侧重于对象而不是过程,侧重于类的设计而不是逻辑的设计。
天外来客-007 2011-06-13
  • 打赏
  • 举报
回复
有问题,问百度!
sky-ck 2011-06-13
  • 打赏
  • 举报
回复
楼主仅仅是学c语言吧,c语言如果真正的学精通了才是大牛,虽然各门语言的侧重点不同,当你精通c语言的时候,学习c++会轻松很多,因为c_++中也有指针,而且更复杂,加之引入了面向对象的功能,如果c语言不够精通我还是建议楼主精心仔细钻研一下c语言,进而再学c++.c++如果学会了,java等语言学起来会轻而易举的上手,c语言才是王者,不是入门语言,大学将c语言作为入门语言是很失败的,引入的底层机制太多了,不像java那样便利,很好的隐藏了底层机制,所以 不过,语言终究是语言,和汉语英语一样,只是用来做事交流的工具,以后工作了,期间肯定不止用一门语言的
daivder 2011-06-13
  • 打赏
  • 举报
回复
这个问题没有必要深入研究
iambic 2011-06-12
  • 打赏
  • 举报
回复
看书或者自己搜索。这种问题还要发帖问别人?
5t4rk 2011-06-12
  • 打赏
  • 举报
回复
这里的你慢慢看吧,一两句话说不清的
在很大程度上,标准C++是标准C的超集.实际上,所有C程序也是C++程序,然而,两者之间有少量区别.下面简要介绍一下最重要的区别.
在C++中,民,局部变量可以在一个程序块内在任何地方声明,在C中,局部变量必须在程序块的开始部分,即在所有"操作"语句之前声明,请注意,C99标准中取消了这种限制.
在C中,按如下方式声明的函数没有对函数参数进行任何说明;
int func();
也就是说,如果没有在函数后面的括孤内指定任何参数,这在C中就意味着对函数参数未做任何声明,该函数可能有参数,也可能没有参数,然而,在C++中,这样的函数声明意味着该函数没有参数,也就是说,在C++中,下面这两个函数声明具有同样的作用:
int func();
int func(void);

在C++中,参数列表中的void是任选的.许多C++程序员使用它们是为了表明函数没有任何参数的,以便于他人理解程序.但是,从技术上说,void不是必须的.
在C++中,所有函数均必须被设计成原型,但这在C中只是一种选择.编程经验表明,在程序中也应该给函数采用原型设计方法.在C与C++之间还存在一个重要而又细微的差别,即字符常数在C中被自动作为整形来处理,但在C++中则不然.
在C中,多次声明一个全局变量虽然不可取,但不算错.在C++中,多次声明同一个全局变量会引发错误.
在C中,一个标识符可以至少31个有效的组成字符.在C++中,一个标识符的所有组成字符均是有效的.可是,从实用角度看,过长的标识符没有太大的用处,不仅不便于记忆,而且还会增加出现打字错误的可能性.
在C中,在程序内部调用main()函数的情形不常见,但这种做法是容许的,在C++中,这种做法是不容许的.
在C中,无法获得register型的地址,在C++中则可以获得这种地址.
在C中,如果类型声明语句中没有指定类型名,该类型被假定成int,这种隐式转型在C99与C++中是不允许的.

#include <iostream>
using namespace std;
为什么没有.h后缀名?

名称iostream没有扩展名.h,原因是<iostream>是标准C++所定义的新式头部文件之一,新式C++头部文件不再使用.h扩展名.
第二行告诉编译程序使用std名称空间,名称空间是最近才添加到C++中,一个名称空间建立一个声明范围,在该范围内可以放置各种程序元素.名称空间用来帮助组织大型程序的结构.这条using语句通知编译程序,程序员需要使用std名称空间,这是整个标准C++库声明所使用的名称空间.通过使用sdt名称空间,程序可以简化对标准库的访问.普通C程序仅使用C子集,不需要名称空间语句,因为C的库函数在默认的全局名称空间中是可使用的.


类与结构体的区别:类与结构体是相互关联的

结构是C的一部分,C++从C中继承了结构,在语法上,类与结构十分相似,在关系上,这两者也很接近,在C++中,结构的作用被拓宽了,进而使结构成为了类的一种替代方法.实际上,类与结构的惟一区别在于:在默认状态下,结构的所有成员均是公有的,而类的所有成员是私有的.除此之外,类与结构是等价的,也就是说,一个结构定义了一个类的类型.
C++同时包含这两个等价的关键字struct与class基于3个方面的原因.第一,加强结构的能力.在C中,结构提供了一种数据分组方法,因而让结构包含成员函数是一个小小的改进.第二,由于类与结构是相互关联的,所有现有C代码到C++的移植变得更容易.第三,由于类与结构的等价性,提供两个不同的关键字可以使类定义自由发展,为了保持C++与C的兼容性,结构定义必须始终受它的C定义的结束.
即使在有些地方可以使用结构来代替类,但尽量不要这么做,为了清楚起见,该用类的地方就用class关键字,该用C结构的地方就用struct关键字.

类与联合是相互关联的

联合也可以用来定义类.在C++中,联合包含成员函数,变量以及构造与析构函数.C++联合保留了C联合的全部特征,其中最重要的特征是所有数据元素共享内存的相同地址.与结构类似,联合的成员在默认状态下也是公有的,并且完全兼容于C.与结构一样,C++中的联合声明定义了一种特殊的类,进而意味着保持了类的封装原则.
C++的联合有几个必须遵守的使用限制.第一,联合不能继承其他任何类型的类.第二,联合不能是基类,不能包含有虚函数成员.静态变量不能是联合的成员.联合不能使用引用成员,而且不能有任何作为成员的重载赋值运算符的对象.第三,如果一个对象包含明确的构造或析构函数,该对象不能成为联合的成员.
C++有一个叫做匿名联合的特殊联合.匿名联合没有类型名,也不声明任何变量,只是告诉编译程序它的成员变量共享一个内存地址.但是,变量本身无需要使用常规的点运算符语法即可直接引用.
上述联合的使用限制也适用于匿名联合,但下面这两个限制除外,第一,匿名联合所包含的元素只能是数据,不能包含成员函数,也不能包含私有或受保护元素;第二,全局匿名联合必须声明成静态的.
user714 2011-06-12
  • 打赏
  • 举报
回复
可以把它们作为两种语言来学习,这样写出的程序就不会语法相互混杂,不伦不类.
地狱业火 2011-06-12
  • 打赏
  • 举报
回复
小熊猫跟大熊猫
laizhiping_rj 2011-06-12
  • 打赏
  • 举报
回复
封装、泛型
jiangchaomr 2011-06-12
  • 打赏
  • 举报
回复
一个面向过程
一个面向对象
C++是C的超集
自由建客 2011-06-12
  • 打赏
  • 举报
回复
这个很难解释,就我对两种语言的理解:
拿 C 来写面向对象程序只能人肉模拟,虽然有成功的经历但很累。C++ 则直接支持。
想用 C 写泛型,那就要一堆宏,还是人肉模拟,而且我没成功过。C++ 则直接支持。
至于面向对象和面向过程只能请楼主自己体会了,我解释不了。
tiancaijushi 2011-06-12
  • 打赏
  • 举报
回复
这个问题太广泛了。一两句话说不清楚呀。
lucky-lucky 2011-06-12
  • 打赏
  • 举报
回复
面向对象这个名词花半年的时间看能理解不
bdxxxx 2011-06-12
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 iambic 的回复:]
看书或者自己搜索。这种问题还要发帖问别人?
[/Quote]

LZ伸手党不解释
crjwlaq 2011-06-12
  • 打赏
  • 举报
回复
c++ 比 C 多了点东西而已
geneni 2011-06-12
  • 打赏
  • 举报
回复
C是面向过程实现的,C++是面向对象实现的。
KID_coder 2011-06-12
  • 打赏
  • 举报
回复
面向过程
面向对象
liutengfeigo 2011-06-12
  • 打赏
  • 举报
回复
C
C++
一眼就看出来了,不是多了两个+么.
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

64,651

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧