跳转到内容

C++ 编程:C++ 编程语言

来自维基教科书,开放世界中的开放书籍

介绍 C++

[编辑 | 编辑源代码]

C++ (发音为“see plus plus”) 是一种通用多范式静态类型自由格式 编程语言,支持过程式;面向对象;泛型;以及(最近)函数式编程范式,并且以其在代码中促进低成本抽象而闻名。如果您不熟悉上述任何概念,请不要担心,它们将在后续部分介绍。

1990 年代C++ 成为最流行的计算机编程语言之一,根据TIOBE 指数,它仍然是最流行的语言中的第四名。[1] C++ 最初设计时重点放在系统编程上,但其功能也使其成为创建最终用户应用程序的理想语言,尤其是那些资源受限或需要非常高的性能的应用程序。C++ 被广泛用于游戏开发、Web 客户端/服务器端、金融应用程序的后端和机器人技术。

历史和标准化

[编辑 | 编辑源代码]
Photo of Bjarne Stroustrup, creator of the programming language C++.
Bjarne Stroustrup 的照片,他是 C++ 编程语言的创造者。

Bjarne Stroustrup,来自贝尔实验室的计算机科学家,是C++(最初名为“带类的 C”)的 1980 年代的设计者和最初的实现者,是对C 编程语言的增强。C 也是在贝尔实验室为了实现Unix 操作系统而由丹尼斯·里奇创建的,它赋予用户比汇编语言 (ASM) 更高的概念级别对硬件的控制,但仍然具有有限的表达能力。Stroustrup 决定将面向对象Simula 语言的程序组织功能与 C 对硬件资源的有效利用相结合。增强功能始于添加面向对象的概念,例如虚函数,随后,在许多功能中,有命名空间运算符重载模板异常处理。这些和其他功能将在本书中详细介绍。C++ 的一些功能后来被 C 采用,包括用于在程序中创建不可变值的 const 关键字、inline 函数、在for 循环 中的声明,以及C++ 风格的注释(使用//符号)。

C++ 编程语言ANSI(美国国家标准学会)、BSI(英国标准学会)、DIN(德国国家标准化组织)和其他几个国家标准机构认可的标准,并于 1998 年由ISO(国际标准化组织)批准为 ISO/IEC 14882:1998,但更常被称为C++98 或简称为C++。该标准包含两部分:核心语言和标准库;后者包括标准模板库标准 C 库(ANSI C 89)。

2003 年版本,ISO/IEC 14882:2003,称为C++03,将标准语言重新定义为一个单独的项目。在C++ 标准化之前存在的 STL(“标准模板库”)(最初是在Ada 中实现的)成为标准的组成部分,也是符合标准的实现的必备条件。

从 2004 年开始,标准委员会(包括 Bjarne Stroustrup)制定了新版本标准的细节,C++11(以前称为C++0x)于 2011 年 8 月 12 日获得批准。C++11 使该语言更高效、更易于使用,并在标准库中添加了更多功能。C++14 的规范于 2014 年 12 月 15 日发布,与C++11 相比,其变化较小,并且编译器对该标准的支持很快跟进。有几个表格 显示了编译器对所谓的现代 C++ 功能的支持。


Clipboard

待办事项
添加 C++17 和 C++20 的条目。


许多其他C++ 库存在,它们不属于标准,一个流行的例子是Boost。此外,用 C 编写的非标准库通常可以被C++ 程序使用。

C++ 源代码示例
// 'Hello World!' program 
 
#include <iostream>
 
int main()
{
  std::cout << "Hello World!" << std::endl;
  return 0;
}


传统上,人们在学习一门新语言时编写的第一个程序被称为“Hello World”,因为它的作用只是简单地显示Hello World 这几个词,同时在这个过程中揭示了有关该语言的基本信息。 Hello World 解释(在示例附录中)详细解释了这段代码,其中可以看到这里提到的C++ 的几个元素,包括 C 风格的语法和标准库的使用。

在你开始了解如何使用C++ 编写程序之前,了解你可能会遇到的一些关键概念非常重要。这些概念并不局限于C++,但有助于理解计算机编程的总体概念。有其他编程语言经验的读者可能希望快速浏览一下本节,或者完全跳过本节。

如今,有很多不同类型的程序在使用。从你使用的操作系统,它确保一切正常工作,到你用来娱乐的视频游戏和音乐应用程序,程序可以满足许多不同的目的。所有程序(也称为软件应用程序)的共同点是,它们都是由以某种形式或另一种形式用编程语言编写的指令序列组成。这些指令告诉计算机该做什么,以及通常如何去做。程序可以包含从解决数学问题的指令到视频游戏角色在游戏中被击中时如何表现的任何内容。计算机将从头到尾逐条执行程序的指令。

所有计算机程序(或者更确切地说是大多数程序)的另一个共同点是它们解决问题并执行任务。向世界问好。在屏幕上绘制一个按钮。计算 26*78。驾驶汽车。幸运的是,计算机必须学会如何执行这些任务。换句话说,它们必须被编程。

为什么要学习 C++?

[编辑 | 编辑源代码]

为什么不学呢?这是决定学习任何东西的最清晰的方法。虽然学习永远是好事,但选择你学什么更重要,因为这将是你优先处理任务的方式。这个问题的另一个方面是你将投入一些时间来获得新的技能。你必须决定这将如何使你受益。检查你的目标,并比较类似的项目,或者看看编程市场需要什么。无论如何,你了解的编程语言越多越好。

C++ 不是理想的第一语言。但是,如果你愿意对C++ 投入超乎寻常的兴趣,那么你甚至可以将它作为你的第一语言来学习。确保花一些时间了解不同的范式以及为什么 C++ 是一种多范式或混合语言。

如果你学习 C++ 的目的仅仅是为了在简历上多加一项技能,也就是只愿意付出足够的努力去了解其主要特点,并学习一些关于其不为人知的角落,那么你最好先学习另外两种语言。这将有助于你了解 **C++** 在编程方法上的独特之处。你应该选择一种命令式语言和一种面向对象语言。对于前者,C 可能是最好的选择,因为它具有良好的市场价值,并且与 **C++** 存在直接关联,尽管 ASM 也是一个不错的替代选择。对于后者,Java 是一个不错的选择,主要是因为它与 C++ 的语法有很多共同之处,但它不支持命令式编程。阅读 语言比较 部分以更好地了解它们之间的关系。

虽然学习 C 不是理解 **C++** 的必要条件,但你必须知道如何使用命令式语言。**C++** 不会让你很容易地理解一些更深层的概念,因为在 C++ 中,你,程序员,被赋予了更大的自由度。在 C++ 中,有很多方法可以完成一件事。理解选择哪种方法将成为掌握这门语言的基石。

如果你仅仅对学习面向对象编程感兴趣,你不应该学习 **C++**。C++ 对对象提供了一些支持,但它仍然不是真正的面向对象语言,因此使用的命名法和解决问题的思路会让你更难学习和掌握这些概念。如果你真的对面向对象编程感兴趣,你应该学习 Smalltalk

与所有语言一样,**C++** 也拥有特定的应用范围,它能够真正发挥其优势。C++ 比 C 和 Java 更难学,但比它们都更强大。**C++** 使你能够从在 C 或其他更底层的语言中必须处理的小事中抽象出来,但它会赋予你比 Java 更大的控制权和责任。由于它不会提供你可以在类似更高层语言中获得的默认功能,你必须搜索和检查这些功能的几个外部实现,并自由选择最适合你目的的实现(或实现你自己的解决方案)。

  1. "根据 TIOBE 指数,C++ 是第三大最流行的编程语言". 2020 年 9 月.
华夏公益教科书