C语言和C++到底有什么关系?

C++ 读作“C加加”,是“C Plus Plus”的简称。

顾名思义,C++ 就是在C语言的基础上增加了新特性,玩出了新花样,所以才说“Plus”,就像 Win11 和 Win10、iPhone 15 和 iPhone 15 Pro 的关系。

C语言是 1972 年由美国贝尔实验室开发成功的,在当时算是高级语言,它的很多新特性都让汇编程序员羡慕不已,就像今天的 Go 语言,刚出生就受到追捧。C语言也是“时髦”的语言,后来的很多软件都用C语言开发,包括 Windows、Linux、Mac OS、MySQL、Python 等。

但是随着计算机性能的飞速提高,硬件配置与几十年前已有天壤之别,软件规模也不断增大,很多软件的体积都超过 1G,例如 PhotoShop、Visual Studio 等,用C语言开发这些软件就显得非常吃力了,这时候 C++ 就应运而生了。

C++ 主要在C语言的基础上增加了面向对象和泛型的机制,提高了开发效率,以适用于大中型软件的编写。

C和C++的血缘关系

早期并没有“C++”这个名字,而是叫做“带类的C”。“带类的C”是作为C语言的一个扩展和补充出现的,目的是提高开发效率,如果你有 Java Web 开发经验,那么你可以将它们的关系与 Servlet 和 JSP 的关系类比。

这个时期的 C++ 非常粗糙,仅支持简单的面向对象编程,也没有自己的编译器,而是通过一个预处理程序(名字叫 cfront),先将 C++ 代码“翻译”为C语言代码,再通过C语言编译器合成最终的程序。

随着C++的流行,它的语法也越来越强大,已经能够很完善的支持面向对象编程和泛型编程。但是一直也没有诞生出新的 C++ 编译器,而是对原来C编译器不断扩展,让它支持 C++ 的新特性,所以我们通常称为 C/C++ 编译器,因为它同时支持 C和C++,例如 Windows 下的微软编译器(cl.exe),Linux 下的 GCC 编译器。

也就是说,你写的 C、C++ 代码都会通过一个编译器来编译,很难说 C++ 是一门独立的语言,还是对C的扩展。


图:C语言和C++的关系

学习顺序

C++ 语法繁杂,是最恶心的编程语言,没有之一。如果针对没有任何编程经验的读者写一本 C++ 的书,那将是一项不小的任务,写出来的书也会非常厚。即使这样,也仅仅是在讲语法。

更重要的是,这些知识你很难全部吸收,会严重打击你的信心,失去学习的兴趣。

没有任何编程基础的读者,我建议先从C语言学起,不要贪多嚼不烂。有编程基础的读者,相信你自己能做出正确的判断。

学习编程是一个循序渐进的过程,不要期望一口吃个胖子。学习C语言,一来是学习它的语法,为 C++ 打基础,同时培养编程兴趣,二来是学习内存、编译和链接,弄清编程语言的内在机理。

每个初学者都经历过这样的窘境:已经学习了语法,明白了编程语言都有什么,也按照教程敲了不少代码,但是遇到实际问题就挂了,没有思路,不知道从何下手。说白了就是只会学不会用。

究其原因,就是实践少,没有培养起编程思维!学习知识容易,运用知识难!

等你熟悉了C语言,能编写出上百行的代码,就对编程有些概念了。这个时候再去了解 C++ 究竟在C语言基础上增加了什么,你就站在了一定的高度。

从“学院派”的角度来说,C++ 支持面向过程编程、面向对象编程和泛型编程,而C语言仅支持面向过程编程。就面向过程编程而言,C++ 和C几乎是一样的,所以学习了C语言,也就学习了 C++ 的一半,不需要从头再来。

咱们教程也是这样安排的:先讲解C语言,再讲解 C++,主要包括 C++ 和C语言的一些差别,以及面向对象编程和泛型编程。

结论

C++ 是在C语言的基础上扩展而来的,可以把C语言当成 C++ 的一个部分。

我建议先从C语言学起,打好基础了,再继续学习 C++。反正学习C语言就是在学习 C++,怕什么。

添加微信咨询 扫码添加管理员微信 扫码添加管理员微信
微信ID:biancheng_yan