C/C++ 是一种语言还是两种语言?我听说 C++ 只是带有类的 C。那正确吗?
8 回答
C++在 1982-1983 年从 C 中分离出来,这在计算机时代已经很长一段时间了。但是,有许多 C 库与 C++ 兼容,包括 C 标准库本身,并且源源不断的程序从 C 移植到 C++。许多 C 程序员只知道或使用与 C++ 兼容的特性。
它们由不同委员会的不同 ISO 标准定义。即使他们定义了兼容的特性,它也经常用不同的术语来定义。
提及 C/C++ 与提及意大利语/西班牙语一样有效。您应该小心使用此类术语的对象和时间。但确实存在两个方向的思想传播,并且相似之处不仅仅是巧合。
“C/C++”恰好是零种语言。它不存在。
另一方面,C 是一种语言。
C++ 是另一种语言,它有点像 C,但也有类和许多其他差异。
需要明确的是,@Zoidberg 出现在:
C 和 C++ 是两种完全不同的语言。C with Classes 是 C++ 的前身,但该术语仍然经常用于非现代 C++(例如,到处使用原始指针)。
它是两种语言。将 C++ 称为“C with classes”就像将大象称为四足动物。在您将其与鼠标进行比较之前,它似乎是正确的。
有许多从 C 派生的语言:C++、Java、C#、JavaScript、csh,不胜枚举。它们在许多方面都不同,但它们共享相似的语法。
当然 C 是从 B 派生的。但那是另一回事了(现在没人关心 B了。)
简单的答案:两种语言
它们是两种不同的语言,尽管几乎所有 C 代码都是有效的(不一定是好的)C++ 代码。
C++ 最初被认为是“C,但有类”,但随着时间的推移,它变得越来越不同,现在 C 代码是非常糟糕的 C++ 代码。您可以学习 C 或 C++ 或两者兼而有之,但通常不会将它们混淆(但您可以)。
它们是两种不同的语言。C++ 之所以如此命名,是因为它的一部分源于 C,并且在某种意义上与 C 兼容。
根据 Scott Myers 的 Effective C++,我们可以将 C++ 视为具有以下 4 个组件的统一语言:
- C语言部分、块、语句、预处理器等
- 面向对象的C++:包括类、封装、继承、多态等
- 模板 C++:包括 C++ 模板、元编程的东西
- STL。
所以从某种意义上说,C++ 比 C 更强大。
C/C++ 是两种语言。C 是一种语言,而 C++ 是另一种语言。C++ 被认为是“更好”的 C。C 是过程性的,而 C++ 是面向对象的。C++ 比 C 有很多改进,并且具有与 C 相似的语法。
“C”这个名字是指一系列相关的语言,其中一些被正式化为国际标准。这些包括K&R C、ANSI C、C99和C11。
“C++”这个名字是指一系列相关的语言,其中一些被形式化为国际标准。这些包括 C++98、 C++03、 C++11、 C++14和推测的C++17。
许多人使用术语“C/C++”来非正式地指代 C 和 C++ 的交集,由 C++ 的设计者有意维护。
C++ 的直接前身实际上最初被称为“C with Classes”。这在 Bjarne Stroustrup 1994 年出版的“C++ 的设计和演变”一书中有详细说明(以及这里)。这个名字最终改为“C++”,主要是为了对 C 社区的礼貌,因为人们将“C with Classes”缩短为“C”或“new C”变得太诱人了。
C++ 中有许多 C 语言没有的语言特性(反之亦然)。特别是,基于类的模型,由于其调用隐式函数调用的能力,非常强大,以至于 C++ 已经(相当有机地)发展了更高级别的编程风格,这使得 C++ 的典型用法与 C 的用法大不相同。这方面最值得注意的例子与称为资源获取即初始化的概念相关联,该概念体现在标准类 string、vector和shared_ptr以及标准 I/O 库的流类中。
其他注意事项:
恕我直言,我认为答案是 C/C++ 不是一种语言,而是两种语言:
- C 编程语言
- C++ 编程语言
C++ 语言是从 C 语言衍生而来的。C++ 是添加了“类”功能的 C 编程语言的名称。这意味着基本的 C 语言体系结构已得到增强,可以进行面向对象的编程。它使用表示增量的“++”运算符。C++是C的一个增量,它允许您在编程方式中使用过程方式或面向对象方式或两者兼而有之。C++ 让我们比 C 更容易编写代码。但这并不意味着 C 语言现在不适合,因为我们有 C++。每种语言都用于实现程序员所需的软件目的。这就是 ANSI 将 C 设为标准的原因。