C vs C++ - 使用c语言的优势

Bjö*_*röm 3 c c++

顾名思义,C++是C的超集.事实上,C++可以运行大部分C代码而C不能运行C++代码.

例如,与c相比,c ++有几个优点

  • 数据无法隐藏在c语言中
  • c更低级别(这意味着更难理解和编码 - 这意味着更多的错误)
  • c不允许函数重载
  • c不支持异常处理
  • 你可以在C++中使用结构内部的函数,但不能在C中使用

这个列表肯定会更长 - 但是我的问题出现了:与c +​​+相比,c-langauge有什么优势吗?有没有什么比用c ++更好的c?c有c ++缺少的东西吗?

我根本不知道这一点 - 但由于指令集较少,可能比c ++快一点?低级语言可能需要处理器较少的指令.

hac*_*cks 6

简单来说,C和C++是两种不同的语言.

顾名思义,C++是C的超集

不,这不是真的.C++不是C的超集.

与c ++相比,c语言有什么优势吗?有没有什么比用c ++更好的c?

  • 静态初始化在C中是安全的,但在C++中是不安全的,因为在C++中静态初始化可能导致代码运行,这取决于已静态初始化的其他变量.它还可能导致清理代码在关闭时运行,您无法控制(析构函数)的序列.

  • C使您可以更好地控制代码执行时发生的情况.当读取寻找时,解密一个代码正在执行以及当内存刚刚重启或执行原始操作时相当简单.

  • C支持堆栈上的可变大小的数组.分配比在堆上快得多.(C99功能)

  • 没有名字毁了.如果您打算阅读生成的汇编代码,这将使这更容易.在尝试优化代码时非常有用.事实上的标准应用程序二进制接口(ABI).不同编译器生成的代码可以很容易地组合在一起.

  • 更容易与其他语言交互.很多语言都可以直接调用C函数.绑定到C++库通常是一项更复杂的工作.

  • 编译C程序比编译C++程序要快,因为解析C比解析C++容易得多.

  • Varargs无法安全地在C++中使用.它们在C中也不完全安全.然而,它们在C++中更是如此,以至于它们在C++编码标准中被禁止(Sutter,Alexandrescu).

  • C需要较少的运行时支持.使其更适合嵌入式系统或OS组件等低级环境.

  • C中用于封装的标准方法是转发声明结构并仅允许通过函数访问其数据.此方法还会创建编译时封装.编译时封装允许我们更改数据结构成员而无需重新编译客户端代码(使用我们的接口的其他代码).另一方面(使用类)执行封装C++的标准方法需要在添加或删除私有成员变量时重新编译客户端代码.

  • @haccks,您列出的许多"优势"是您的意见或无法证明."C支持堆栈上可变大小的数组.分配比堆上快得多.(C99功能)"是的但是堆栈的大小有限,所以这真的有优势吗? (5认同)
  • "编译C程序比编译C++程序要快,因为解析C比解析C++容易得多." 你有没有测量过?我严重怀疑你是否可以提供一个实际存在的文件. (4认同)
  • 是的,它是巨大的,这就是为什么它被关闭为"过于宽泛":与你所做的完全相反,这是给一个占位符非答案,基本上只是说"不要打扰这个问题". (3认同)
  • 虽然我同意上半部分(关于C和C++不同),但它没有回答这个问题. (2认同)
  • 我希望你并不是说`C`程序在构建之后运行得比`C++'程序快... (2认同)
  • 多么可怜这个问题被搁置 - 我不明白为什么我的问题被大量投票 - 最多-3.你的答案应该更加赞成!非常好的答案!!!! @haccks - 谢谢!!!!! (2认同)
  • 是的,这回答了我从哪里看到的4个问题中的3个问题.批评为什么?看起来中性和足够的信息这一个. (2认同)