C语言和C++到底有什么关系?(c语言和c++是什么关系)

yumo6663周前 (07-18)技术文章15

C++ 读作”C加加“,是”C Plus Plus“的简称。顾名思义,C++是在C的基础上增加新特性,玩出了新花样,所以叫”C Plus Plus“,就像 iPhone 6S 和 iPhone 6、Win10 和 Win7 的关系。

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

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

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

C++和C的血缘关系

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

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

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

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



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

关于C++的学习

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

C语言中文网的教程也是这样安排的:

  • 先讲解C语言,不希望学习C++的读者可以就此止步。
  • 再讲解C++,主要包括C++和C的一些差别,以及面向对象编程和泛型编程。


没有任何编程基础的读者,建议先从C语言学起,不要贪多嚼不烂。等你熟悉了C语言,能编写出上百行的代码,就对编程有些概念了,这个时候再去了解C++究竟在C语言基础上增加了什么,你就站在了一定的高度。有编程基础的读者,相信你自己能做出正确的判断。

相关文章

C语言为什么没有规定严格的运行时检查?为什么源代码编译会报错?

若文章对您有帮助,欢迎关注 程序员小迷 。助您在编程路上越走越好!C语言为什么没有规定严格的运行时检查?这与C语言设计之初所处的硬件软件环境有关,最早Unix操作系统所在的硬件条件资源紧张,没有必要再...

一篇文章带你明白:什么是编译器,什么是集成开发环境(IDE)?

各位,关于编译器和集成开发环境这两个名称,我们平时一直在说,但这二位究竟有什么区别和联系呢,今天就跟大家简单聊一聊。我们平时所说的程序,是指双击后就可以直接运行的程序,这样的程序被称为可执行程序(Ex...

嵌入式程序开发,C语言和C++究竟应该用哪个?

在嵌入式软件程序开发中,C语言无疑是最常被使用的程序语言。不过应该明白的是,有些嵌入式硬件同时提供C语言程序编译器以及C++程序编译器,而相比于C语言,C++的确具备很多非常好用的特性。C++更好用?...

挑战 50 年霸主 C 语言:新语言 Hare,“异端”中的保守派

Hare 原意为野兔,它的开发者希望这种编程语言能够如野兔般拥有顽强的生命力。本周,软件开发者 Drew DeVault 公布了一种名为 Hare 的全新系统编程语言,并用“简单、稳定和健壮”作为核心...

C语言编译器优化选项(编译器优化算法)

编译器是软件开发工具链中的核心组成部分,它负责将人类可读的源代码转换为机器可执行的指令。现代编译器不仅执行这种转换,还具备强大的代码优化能力,可以在编译阶段自动改进程序的性能、减小代码体积,甚至有时还...

软件是用编程软件编的,编程软件又怎么来的?

我认为程序的本质是给定输入,用指定逻辑给出输出。所以用basic写汇编编译器,JavaScript写c的编程工具完全做得到。c的编译器是c写的,go的编译器是go写的,Java的编译器是Java写的。...