C++ Primer 第一章 预备知识

C++ Primer 学习笔记

由于游戏开发的尽头是C++,所以开创此系列篇章,详细记录在学习C++ Primer这本书时候知识记录,以及遇到的问题,同时也有优秀的知识点的记录,还有自己对一些知识点的理解以及拓展。

该系列文章绝不是简单的阐述概念,而是将知识点互相串通,融入使用。欢迎大家关注,文章会持续更新!!!


第一章 预备知识

image-20220614141908441

1. C++ 简介

C++融合了三种不同的编程方式:

1.C语言代表的过程性语言

2.C++在C语言基础上添加的类代表的面向对象语言

3.C++模版支持的泛型编程

2.C++简史

20世纪70年代,C和Pascal这样的语言将人们引领进入了结构化编程时代,C还能生成简洁快速运行的程序,并提供了处理硬件问题的能力,如管理通信端口和磁盘驱动程序。这使得C语言在20世纪80年代占统治地位。同时,一种新的编程模式也快速成长:面向对象编程(OPP)

2.1 C 语言

20世纪70年代早期,Ritchic希望有一种语言能够将低级语言的效率、硬件访问能力和高级语言的通用性、可移植性融合在一起,于是他在旧的语言基础上开发了C语言

2.2 C 语言编译原理

一般来说,计算机语言要处理两个概念——数据和算法。数据是程序使用和处理的信息,而算法是程序使用的方法

image-20220614144953007

C语言在最初面世时也是过程性语言这意味着它强调的是编程的算法方面。从概念上说,过程化编程首先要确定计算机采取的操作,然后使用编程语言来实现这些操作。程序命令计算机按一系列流程生成特定的结果,就像菜谱指定了厨师做蛋糕时应该遵循的一系列步骤一样。一种基础的顺序的思维方式

但是,随着程序规模扩大,早期的程序语言都会遇到组织方面的问题,很多地方使用分支语句,指向路径很混乱(被称为“意大利面条式”编程),几乎不可能阅读,也无法下手修改。

为了解决这种问题,出现了结构化编程。比如结构化编程将分支限制为一组行为良好的结构。C语言中有for循环、while循环、do while循环、if else语句

另外一个新的原则是自顶向下,将大型程序分为一个个小型的模块,然后利用模块思想来解决问题

综上,结构化编程技术反映了过程性编程的思想,根据执行的顺序操作来构思一个程序。

2.3 面向对象编程

最大的区别便是:

OOP强调的是数据。OOP不像过程性编程那样,试图使问题满足语言的过程性方法,而是试图让语言来满足问题的要求。其理念是设计与问题的本质特性相对应的数据格式

在C++中类是一种规范,它描述了这种新型数据格式,对象是根据这种规范构造的特定数据结构。通常,类规定了可以使用哪些数据来表示对象以及可以对这些数据执行哪些操作。比如定义一个Dog的类,我们可以有以下属性:Name昵称、Age年龄、Color颜色、Type犬种。同时有以下方法:Bark叫、Walk走、Eat。

那么我们去创建一个Dog对象的时候,就是用这个类的模版,创建出一个独一无二的对象。

从低级组织(如类)到高级组织(如程序)的处理过程叫做自下向上的编程

OOP编程编程不仅仅是将数据和方法合并为类定义。例如,OOP还有助于创建可重用的代码(继承)、信息隐藏保护数据(私有属性)、多态(同一个行为具有多个不同表现形式或形态的能力)。

2.4 C++和泛型编程

泛型编程是C++支持的另一种编程模式。它与OOP的目标相同,即使重用代码抽象通用概念的技术更简单。

不过OOP强调的是编程的数据方面,而泛型编程强调的是独立于特定数据类型。它们的侧重点不同。

术语泛型指定是创建独立于类型的代码。C++有多种数据类型——整数、小数、字符、字符串、用户定义的类等等一系列,如果这个时候要对不同的数据类型进行排序,难道我们要对不同的类型写不同的排序方法吗?不,**泛型编程需要对语言进行扩展,以便可以只编写一个泛型(即不是特定类型的)函数,并将其用于各种实际类型。**比如一个支持泛型的排序函数。C++模版提供了完成这种任务的机制。

2.5 C++的起源

与C语言一样,C++也是在贝尔实验室诞生的,Bjarne Stroustrup 于20世纪80年代在这里开发出了这种语言。用他自己的话来说,“C++主要是为了我的朋友和我不必再使用汇编语言、C语言或其他更现代高级语言来编程而设计的。它的主要功能是可以更方便地编写出好程序,让每个程序员更加快乐”。

C++是C语言的超集,这意味C语言程序可以直接在C++环境下运行。C++可以使用C软件库,库是编程模块的集合,可以从程序中调用它们。库对很多场景的编程问题提供了可靠的解决方法,因此能节省程序员大量的时间和工作量。

OOP赋予了C++将问题所涉及的概念联系起来的能力,C部分则赋予了C++语言紧密联系硬件的能力。

image-20220614153216709

C++融合了OOP、泛型编程、和传统的过程性方法,这表明C++强调的是实用价值,而不是意识形态方法,这也是C++成功原因之一。

3. 可移植性和标准

如果在不修改代码的情况下,重新编译程序后,程序将运行良好,则该程序是可移植的。

可移植性主要有两个障碍,其中一个是硬件,另外一个是语言上的差异。语言上的差异我们可以通过制定C++标准来实现。

这其中就有标准模板库STL

4. 程序创建

编写的C++程序,是怎么运行起来的呢?

1.使用编辑器编写程序,并保存到文件中,这个文件就是源代码

2.编译源代码。这意味着运行一个程序,将源代码翻译为主机使用的内部语言——机器语言。包含了翻译后的程序的文件就是程序的目标代码。

3.将目标代码和其他代码链接起来。例如,库。链接指的是将目标代码同使用的函数的目标代码以及一些标准的启动代码结合起来,生成程序运行阶段版本。

最后生成最终产品,也就是可执行文件

image-20220614155208022

4.1 创建源代码文件

在编辑器创建C++文件,即cpp扩展名的文件

4.2 编译和链接

在最初,是使用cfront将C++变为C源代码,然后使用标准C编译器对其进行编译。但是现在是直接将C++源代码生成目标代码。

Windows编辑器

Compile 意味着对当前打开的文件中的代码进行编译

BuildMake 意味着编译项目中所有源代码文件的代码

Build All 通常意味着重新编译所有的源代码文件

Link 意味着将编译后的源代码与所需的库代码组合起来

RunExecute 意味着运行程序 (如果你没有执行前面的步骤,那么你Run将在运行程序之前完成前面这些步骤)

Debug 意味着以步进方式运行程序

猜你喜欢

转载自blog.csdn.net/m0_48781656/article/details/125280889