我即将学习C++。
C语言的语法有两种。指针和数组。
它们是在 C 标准中定义的,有很多子条款。我知道 C++ 是 C 的超集(它可能是一种概括)。那么这些特性和C++一样吗?如果是这样,什么版本的 C++ 有什么版本的 C?
eer*_*ika 10
C++ 包括 C99 还是 C89?
目前,虽然 C 和 C++ 的公共子集很重要,但 C++ 不包括它的全部内容。缺少某些功能,并且语言之间存在不兼容的差异。C++ 标准“兼容性/C++ 和 ISO C [diff.iso]”和“C 标准库 [diff.library]”的非规范部分列出了(部分)差异。
但是,C++“基于”C 标准并且确实引用了它。以下是最新标准草案的引述:
[介绍范围]
C++ 是一种基于 C 编程语言的通用编程语言,如 ISO/IEC 9899:2018 编程语言 — C(以下简称 C 标准)中所述。C++ 提供了许多超出 C 提供的工具......
[介绍.refs]
以下文件在正文中的引用,其部分或全部内容构成本文件的要求。对于注明日期的参考文献,仅适用所引用的版本。对于未注明日期的参考文献,适用参考文件的最新版本(包括任何修订)。
- ...
- ISO/IEC 9899:2018,编程语言 — C
- ...
ISO/IEC 9899:2018 第 7 条中描述的库在下文中称为 C 标准库。
什么版本的 C++ 有什么版本的 C?
从历史的角度来看,(标准前的)C++ 在 C 被标准化之前就已经存在,因此最初不可能基于任何标准。两种语言都是从这个共同的根源演变而来的,并朝着自己的方向发展。
另外,请注意,尽管许多 C 习语在 C++ 中工作,但它们在 C++ 中不是习语,被认为是一种不好的做法。据我了解,高度兼容的原因(超出编写通用头文件的能力)是将 C 程序移植到 C++ 的简便性,允许它以小的增量步骤进行转换。例如,从来没有理由NULL用 C++编写,也几乎没有理由编写malloc.