首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >C和C++之间的主要区别是什么?什么时候你会选择一个而不是另一个?

C和C++之间的主要区别是什么?什么时候你会选择一个而不是另一个?
EN

Stack Overflow用户
提问于 2009-01-14 06:19:10
回答 7查看 4.5K关注 0票数 10

对于那些对两者都有经验的人来说,它们的主要区别是什么?对于任何一个新手来说,学习哪一个会更好?有没有可能先选择C语言,然后再选择C++的情况呢?这是一个使用工作的最佳工具的案例,还是一个明显优于另一个的案例。我知道C++是C的“增强”,但它是在83年创建的,还没有完全取代C,所以它一定有更多的东西。

我知道这个问题是主观的,我并不是要挑起任何宗教战争,所以请尽量客观一点。明确优势和劣势,并进行比较。

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2009-01-14 06:39:18

C是一种纯过程语言,而C++是一种多范式语言。它支持

表达式泛型编程:允许只编写一次代码,然后在不同的data-structures.

  • Meta编程中使用它:允许在编译时使用模板生成高效的代码允许在编译时检查某些属性:
  • 具有什么类型?一个函数有多少个参数?
  • 面向对象编程:允许程序员进行面向对象的编程,具有多重继承和私有继承等复杂功能。
  • Procedural :允许程序员将函数从任何类中解放出来。与ADL等高级功能相结合,可以编写与某些类的细节解耦的干净代码。

除此之外,C++在很大程度上保持了与C代码的兼容性,但也存在一些差异。这些可以在C++标准的附录D中阅读,以及使C代码有效的C++代码的原因和可能的修复。

票数 15
EN

Stack Overflow用户

发布于 2009-01-14 06:22:41

C++是C的99%的超集,它在语法上更严格一些,在变化方面有一些非常微小的差异。

最大的不同之处在于,C++尝试面向对象。有对类的本机支持。

在C++中还有一些其他的好处:模板,流运算符,按引用传递(比指针传递少了一点混淆)

使用C++你会失去什么?它缺少了很多人使用C来实现的一些最底层的技巧。我不记得他们中的任何一个,但是我从来没有听到过任何关于欺骗编译器去做你想做的事情的好论点,除非是作为一种提高效率的方法。

票数 8
EN

Stack Overflow用户

发布于 2009-01-14 06:27:23

C++,顾名思义,正如你在问题中所说的,是对C的增强,这是一个重要的增强。(我使用“增强”这个术语来指特性,而不是指功能。)然而,关于增强的事情是它意味着增长。C++通常将自己借给更大的程序。应用程序,真的。它是一种高性能的语言,但它很大。

另一方面,C用于内核和驱动程序编程是有原因的。它很旧(古老?),很小,而且如果你聪明的话,可以在不自己写汇编程序的情况下尽可能快地运行。显然,权衡的是功能。C没有很多像我这样的C++程序员认为理所当然的好的、大的、模糊的概念,比如类和模板(是的,完全有罪)。

因此,为了更直接地回答您的问题,我的大多数大型、高性能项目都是用C++编写的。如果我正在开发像驱动程序或嵌入式系统这样的东西,我会期望使用C。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/443090

复制
相关文章
angular4实战(4)ngrx
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/j_bleach/article/details/78161765
j_bleach
2019/07/02
1.2K0
angular4实战(4)ngrx
Angular 4 组件通信
最近在项目上,组件跟组件之间可能是父子关系,兄弟关系,爷孙关系都有。。。。。我也找找了很多关于组件之间通讯的方法,不同的方法应用在不同的场景,根据功能需求选择组件之间最适合的通讯方式。下面我就总结一下关于组件通讯的N多种方法。
半指温柔乐
2020/06/10
9300
忘记 Angular 3:Google 将发布 Angular 4
2016年11月,当Google详细说明将在Angular 2到来的短短6个月后发布Angular 3的计划时,每个人都大吃一惊。现在,事实证明终究“No Angular 3”发布。相反,Google将于2017年3月正式推出其流行的JavaScript框架的第4版。
疯狂的技术宅
2019/03/28
1K0
忘记 Angular 3:Google 将发布 Angular 4
angular4实战(1) angular-cli
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/j_bleach/article/details/78077403
j_bleach
2019/07/02
6920
angular4实战(1) angular-cli
(4)Angular的开发
angular框架,库,是一款非常优秀的前端高级JS框架,有了这个框架就可以轻松构建SPA应用程序,通过指令宽展了HTML,通过表达式绑定数据到HTML。
达达前端
2019/07/22
3.1K0
Angular4 实战开发
本文介绍了Angular4实战开发系列文章,该系列文章以用为主,结合通俗易懂的实例来让大家理解常用的知识点。主要内容包括:Angular CLI、创建组件、使用CSS美化组件、属性和事件绑定、组件通讯、创建指令、创建服务、创建管道、创建表单和路由导航、动画。通过本系列文章,用户可以快速掌握Angular4的实战开发技能。
IMWeb前端团队
2018/01/08
7270
Angular企业级开发(4)-ngResource和REST介绍
一、RESTful介绍 RESTful维基百科 REST(表征性状态传输,Representational State Transfer)是Roy Fielding博士在2000年他的博士论文中提出
八哥
2018/01/18
8560
Angular企业级开发(4)-ngResource和REST介绍
高级 Angular 组件模式 (4)
命名冲突不仅存在于指令的选择器之间,同时也会存在于指令的Inputs和Outputs属性,当这些属性名一样时,Angular并不会进行提示,它会按原本的逻辑正常工作。这种情况有时候是我们希望看到的,有些时候却不是。
littlelyon
2018/10/19
7890
Angular4 实战开发
《Angular 实战系列》目前处于章节不定,内容不定阶段,这一系列文章不会长篇大论的讲解概念,而是以用为主,结合通俗易懂的实例来让大家理解常用的知识点。
IMWeb前端团队
2019/12/06
5580
Angular4记账webApp练手项目之一(利用angular-cli构建Angular4.X项目)
官方文档 :https://github.com/angular/angular-cli
易兒善
2018/08/21
1.1K0
Angular4记账webApp练手项目之一(利用angular-cli构建Angular4.X项目)
SPA网站SEO优化PhantomJs
随着web2.0的兴起,ajax的时代已经成为了事实,更如今Knockout,backbone, angular,ember前端MDV(model driver view)框架强势而来,Single Page Application已经为大家所熟悉了。如今常见的SPA程序,restfull和前端MDV之类的框架能够实实在在的减少我们的代码开发量,让我更多的注意力关注在真正的业务逻辑上。在众多前端MDV框架从博客中可以看出来笔者还是钟爱于angular,然而服务端平台的选择的话:在.net平台笔者会首选webapi+oData,jvm平台spring restfull。
javascript.shop
2019/09/04
2K0
SPA网站SEO优化PhantomJs
Angular4记账webApp练手项目之二(在angular4项目中使用Angular WeUI)
安装后还需要引用weui 样式以及我们的font-awesome图标苦,在我们项目index.html中引用
易兒善
2018/08/21
2.2K0
Angular4记账webApp练手项目之二(在angular4项目中使用Angular WeUI)
4、Angular JS 学习笔记 – 模块 [翻译中]
你可以认为一个模块就是一个app的不同部分,controllers,services,filters,directives,等。
前Thoughtworks-杨焱
2021/12/08
9660
angular4实战(2) router
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/j_bleach/article/details/78077844
j_bleach
2019/07/02
5750
angular4实战(2) router
ionic4 -- angular 跳转页面
ionic4 与前辈们最大的不同就是通过angular引入了route,这样每次跳转的时候只需要直接跳转对应的路由地址就可以了,给了路由器上的解耦,也解决了原来的RXjs与Events的子页面反复跳转重复添加监听问题【挖坑,具体操作等后面进一步深入研究】。通过翻阅源码,我们看到:
stormKid
2018/09/12
2.9K0
ionic4 -- angular 跳转页面
Angular4记账webApp练手项目之五(Angular4项目中创建service(服务)和使用http模块)
ng给我们创建的模块account.service.ts,内容如下。 有关@Injectable和@Component,都是angular中的关键字或者关键注解。通过注解来表明js文件的类型,以方便angular框架进行调用。 @Component表示该js文件所导出的类是组件。 @Injectable表示该js文件所导出的文件是服务,而服务是可以通过注入来创建的。 服务的注入,是angular中用来剥离controller和业务逻辑的方式。
易兒善
2018/08/21
1.3K0
Angular4记账webApp练手项目之五(Angular4项目中创建service(服务)和使用http模块)
Angular2 VS Angular4 深度对比:特性、性能
在Web应用开发领域,Angular被认为是最好的开源JavaScript框架之一。
葡萄城控件
2022/05/09
8.8K0
Angular2 VS Angular4 深度对比:特性、性能
angular4 Flex Layout开发实践
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/j_bleach/article/details/77513213
j_bleach
2019/07/02
1.1K0
angular4 Flex Layout开发实践
Angular Input和Output
Input 是属性装饰器,用来定义组件内的输入属性。在实际应用场合,我们主要用来实现父组件向子组件传递数据。Angular 应用是由各式各样的组件组成,当应用启动时,Angular 会从根组件开始启动,并解析整棵组件树,数据由上而下流下下一级子组件。
阿宝哥
2019/11/06
2.4K0
点击加载更多

相似问题

在hashbang之前使用nginx、angular.js和prerender.io

20

将Angular .htaccess与Prerender.io .htaccess合并

123

Angular4,材料和Angular4

23

基于HTML Unit和prerender.io的Angular搜索引擎优化

11

Beego和Angular 4

18
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档