c++基础知识
- “给我的孩子们:永远不要拿帮我做电脑的事情开玩笑。我教你怎么用勺子。”
- 苏Fitzmaurice
在第一章中,我们将引导您了解c++的基本特性。至于整本书,我们将从不同的角度来看待它,但我们不会试图揭露每一个可能的细节——这无论如何都是不可行的。有关特定功能的更详细问题,我们建议您查看在线手册http://www.cplusplus.com/和http://en.cppreference.com。
1.1我们的第一个项目
作为对c++语言的介绍,让我们看一下下面的例子:
# include < iostream >Int main (){std::cout“生命的终极问题的答案,\n”《宇宙,万物皆是:》≪std::endl≪6 * 7≪std::endl;返回0;}
的收益率
生命终极问题的答案宇宙和万物皆是:42
道格拉斯·亚当斯[2]认为。这个简短的例子已经说明了c++的几个特性:
- 输入和输出不是核心语言的一部分,而是由库提供的。必须明确地包括它们;否则我们不能读或写。
- 标准I/O具有流模型,因此命名为< iostream >。为了启用它的功能,我们包括< iostream >在第一行。
- 每个c++程序都是从调用这个函数开始的主要。它返回一个整数值,其中0表示成功终止。
- 牙套{}表示一个代码块/代码组(也称为复合语句)。
- std:: cout和std:: endl定义在< iostream >。前者是在屏幕上打印文本的输出流。std:: endl终止一行。我们也可以用特殊的字符去一个新的行\ n。
- 操作器≪可用于将物体传递到输出流,如std:: cout用于执行输出操作。
- std::表示从标准中使用类型或函数名称空间。命名空间帮助我们组织名字和处理命名冲突;看到§3.2.1之上。
- 字符串常量(更准确地说是字面量)用双引号括起来。
- 表达式6 * 7被计算并作为整数传递给std:: cout。在c++中,每个表达式都有一个类型。有时,作为程序员,我们必须显式声明类型,有时编译器可以为我们推断类型。6和7是类型的字面值常量int因此它们的乘积是int也
在您继续阅读之前,我们强烈建议您在您的计算机上编译并运行这个小程序。编译并运行后,您可以稍微摆弄一下它,例如,添加更多的操作和输出(并查看一些错误消息)。最后,真正学习一门语言的唯一方法就是使用它。如果您已经知道如何使用编译器甚至c++ IDE,则可以跳过本节的其余部分。
Linux:每个发行版都至少提供了GNU c++编译器——通常已经安装(参见B.1节中的简短介绍)。假设我们调用程序hello42.cpp;它很容易用命令编译
g++ hello42.cpp
根据上个世纪的传统,生成的二进制被称为a.o ut默认情况下。有一天,我们可能有多个程序,然后我们可以使用更有意义的名称作为输出标志:
c++ hello42.cpp -o hello42.cpp
我们也可以使用构建工具使(在§7.2.2.1中概述),提供(在最新版本中)构建二进制文件的默认规则。因此,我们可以调用
使hello42
和使将在当前目录中查找类似命名的程序源。它会发现hello42.cpp,以及. cpp是c++源代码的标准文件后缀,它将调用系统默认的c++编译器。编译完程序后,可以在命令行中将其调用为
。/ hello42
我们的二进制文件可以在不需要任何其他软件的情况下执行,我们可以将它复制到另一个兼容的Linux系统中1然后在那里运行。
窗口:如果您正在运行MinGW,则可以按照与Linux下相同的方式进行编译。如果您使用Visual Studio,则需要首先创建一个项目。首先,最简单的方法是使用控制台应用程序的项目模板,如所述,例如,在http://www.cplusplus.com/doc/tutorial/introduction/visualstudio。当您运行程序时,在控制台关闭之前,您有几毫秒的时间来读取输出。要将读取阶段延长到1秒,只需插入不可移植命令睡眠(1000);,包括< windows.h >。在c++ 11或更高版本中,等待阶段可以移植地实现:
std:: this_thread:: sleep_for (std::空间:秒(1));
包括后<空间>和线程> <。微软提供了名为“Express”的免费版本的Visual Studio,它像专业版本一样提供对标准语言的支持。不同之处在于,专业版提供了更多的开发人员库。由于本书中没有使用这些,您可以使用“Express”版本来尝试我们的示例。
IDE:像本书中的例子这样的短程序可以用普通的编辑器轻松处理。在较大的项目中,建议使用集成开发环境查看函数在哪里定义或使用,显示代码内文档,搜索或替换项目范围内的名称,等等。KDevelop是KDE社区用c++编写的免费IDE。188bet备用网它可能是Linux上最有效的IDE,并且可以很好地与git和CMake。Eclipse是用Java开发的,速度明显较慢。然而,最近为了改进对c++的支持,它投入了大量的精力,许多开发人员使用它的效率很高。Visual Studio是一个非常可靠的IDE,它有一些独特的功能,比如一个小型的彩色页面视图作为滚动条。
找到最具生产力的环境需要一些时间和实验,当然这取决于个人和合作的品味。因此,它也将随着时间的推移而发展。