[C++]一、C++基础编程
G:\Cpp\2023版C++教程
C++语言程序设计
第一部分 基础篇
一、什么是C++
1.1 C++ 简介
C++ 是一门非常经典的高级编程语言。顾名思义,C++可以看做是C语言的增强版,在C的基础上扩展了更多的功能;最主要的扩展,就是面向对象和泛型编程。
因此C++融合了多种不同的编程方式:以C语言为代表的面向过程编程;面向对象编程;以及模板化的泛型编程。
可以说,C++一门“大而全”的编程语言,你可以用它实现想要的任何功能;与此同时,学习C++需要掌握的内容也会比较多。
1.1.1 C和C++
20世纪70年代,贝尔实验室的Dennis Ritchie为了开发UNIX操作系统,专门设计了一门结构化的高级语言,这就是大名鼎鼎的C语言。因为是为操作系统设计的语言,它本身是比较底层的,所以C具有低级语言的高运行效率、硬件访问能力,此外又融合了高级语言的通用性。
C语言语法清晰,具有非常好的结构化编程的特性。于是C语言快速地统治了底层的系统级编程,并成为了之后几十年内经典的教学语言。
C语言编程的整体思路是“过程式”的,也就是说,我们把想让计算机执行的操作按照步骤一步步定义好,然后用C语言写出来;所以我们写的代码,就是一个处理流程的描述。这种方式很容易理解,也可以非常方便地翻译成计算机能懂的机器语言;但是在面对大型项目、代码量非常大时,就会显得杂乱无章,代码的可读性就大大降低了。
于是另一种编程方式应运而生,这就是面向对象编程。这种方式的主要思路是先构建“对象”,然后通过定义好的对象行为,实现我们想要的操作。
贝尔实验室的 Bjarne Stroustrup(比雅尼·斯特劳斯特鲁普),在20世纪80年代创建了一个新的面向对象语言——C++。
名字一目了然,它是基于C的,扩展了C的功能;所以C++是C语言的超集,所有C语言程序都可以在C++的环境下运行。而扩展的部分,主要就是引入了面向对象的特性,并实现了对C的泛型编程支持。
C++的出现极大地扩充了C的应用场景,为C语言的长盛不衰提供了很大的助力。所以我们平常看招聘要求的技术栈描述,往往是把C/C++放在一起说的。
1.1.2 C++ 的应用场景
C++完全兼容C,具有C面向硬件的特性;此外还拥有面向对象和泛型编程的扩展。所以C++编写的程序运行效率高、功能强大,特别适合用在系统级应用场景上。所以我们经常可以看到,偏向底层、系统的开发,一般用的语言都是C++。
- 底层硬件,系统编程:JVM的底层,Python解释器的底层,都离不开C/C++的身影;人工智能核心库的代码,也大多是C++写的
- 嵌入式开发
- 游戏开发
当然,除了这些实际应用场景外,由于C/C++是经典的教学语言,因此计算机专业考研、考级、竞赛等场合往往也是把C++作为第一语言的。无论学习还是工作,C++都是一门非常有用的编程语言。
1.2 C++ 标准
C++作为一门高级编程语言,在不同的硬件平台上有着良好的可移植性。这意味着我们不需要改动代码,写出来的程序就可以在不同的平台“翻译”成机器能读懂的语言。要实现这个目标,就必须对C++编写的程序设定一些规范,这就是C++的标准。
C++之父Stroustrup写过一本《C++编程语言》(The C++ Programming Language),里面有一个参考手册,专门介绍了这门语言的特性和用法。这其实就是最初的C++事实标准。
不过真正意义上的标准,还需要专门的组织认证。ANSI(American National Standards Institute,美国国家标准局)在制定了C语言标准之后,在90年代专门设了一个委员会来制定C++的标准,并和ISO(国际标准化组织)一起创建了联合组织ANSI/ISO。1998年,第一个C++国际标准终于出炉了;这个标准在2003年又做了一次技术修订。因此我们一般所说的C++标准,第一版往往被叫做C++ 98/03。
跟大多数语言一样,C++也在不停地发展更新。ISO在2011年批准了C++新标准,这可以认为是C++的2.0版本,一般被叫做C++ 11。C ++ 11新增了很多新特性,极大地扩展了C++的语言表达能力。此后在2014年和2017年,又出了两个新版本C++标准,一般叫做C++ 14和C++ 17,不过这两个版本增加的内容并不多;真正意义上的下一个大版本是2020年的C++ 20,它再一次给C++带来了大量的新特性。
1.3 C++ 代码如何运行
我们用C++写好的代码,其实就是符合特定语法规则的一些文字和符号。计算机是怎样识别出我们想要做的操作、并正确执行呢?
这就需要一个专门的翻译程序,把我们写的源代码,翻译成计算机能理解的机器语言。这个翻译的过程就叫做“编译”,而这个“翻译官”就叫做编译器。所以C++是一门编译型的编程语言,这一点和C是一致的。
事实上,C++代码的运行过程跟C程序代码也是一样的,大致可以分为下面几步:
- 首先编写C++程序,保存到文件中,这就是我们的源代码;
- 编译。用C++编译器将源代码编译成机器语言,得到的这个结果叫做目标代码;
- 链接。C/C++程序一般都会用到库(library),这些库是已经实现好的目标代码,可以实现特定的功能(比如在屏幕上把信息打印显示出来)。这时我们就需要把之前编译好的目标代码,和所用到的库里的目标代码,组合成一个真正能运行的机器代码。这个过程叫做“链接”,得到的结果叫做可执行代码;
- 运行。可执行代码就是可以直接运行的程序,运行它就可以执行我们想要的操作了。
二、简单上手——Hello World
2.1 开发环境和工具(Visual Studio)
写C++程序其实很简单,直接用记事本写好代码,然后用一个编译器做编译运行就可以了;不过这意味这我们得自己保证语法正确,严重影响开发效率。所以实际应用中我们一般都会使用功能更强大的工具,除了提供编译器外,还可以给我们做语法检查和提醒,方便我们调试程序——这就是所谓的“集成开发环境”(IDE)。
Windows系统环境下,最普遍、最好用的IDE就是Visual Studio了,这是微软官方的开发工具,功能非常强大。
打开Visual Studio的中文版官方网站 Visual Studio: 面向软件开发人员和 Teams 的 IDE 和代码编辑器,点击“下载Visual Studio”按钮,选择最新的免费社区版Community 2022。然后双击运行安装程序VisualStudioSetup.exe。
在安装引导程序中,选择自己需要的组件。我们直接选择“使用C++的桌面开发”即可,这个选项会打包安装Windows下C++开发的所有组件。注意不需要选“通用Windows平台开发”,这个还包含了.net平台,是针对C#开发的。
点击“安装”,引导程序会自动帮我们下载和安装所有需要的组件,这个过程可能需要花费一些时间。
如果选择了“安装后启动”,那么安装完成就会自动运行。开始的界面是登录微软账号,我们可以直接跳过。
择开发设置为“Visual C++”,选择自己喜欢的界面主题色,然后点击启动。
2.2 写一个Hello World
Visual Studio启动之后,我们首先应该创建一个项目。所谓“项目”,就是一个工作任务,需要实现相应的需求。点击“创建新项目”。
直接选择一个空项目。
指定项目名称和保存位置。
这里还有一个“解决方案”(Solution)的概念,其实就是一组有关联的项目,共同合作解决一个需求。
2.2.1 代码编写
在打开的解决方案界面里,右键点击“源文件”文件夹图标,添加一个新建项。我们要添加的是一个C++文件,命名为HelloWorld,后缀名是.cpp。
下面就是一段最简单的代码,我们在屏幕上输出Hello World。
#include
int main()
{
std::cout 'a', 'b', 'c'};'h','e','l','l','o'};"张三", 20, 60.0};"小明", 18, 75.0}; // 定义结构体之后立即创建对象"李四", 22, 87};"小红", 18, 92},"小白", 20, 82}"G", nullptr, nullptr};