【c++】【基础】【primer_plus】【第一章】预备知识

前言

《C++ Primer Plus》是本人从高三到大一拜读的第一本c++系列的大部头,苦于一直没有机会整理记录一下。好在近期无事,记录一下主要知识点,仅供入门使用。后续会继续更新关于c++的更进一步的知识及实际使用技巧。

c++其人

关于c++的产生及历史背景,网上有许多资料,这里不再赘述。主要归纳一下书中第一章关于c++的背景介绍。如果读者想进一步了解c++的历史背景,请自行解决。

诞生 -- 20世纪80年代 Bjarne Stroustrup 贝尔实验室

发展 -- c++98 c++11 c++14 c++17

性格 -- oop (面向对象) generic (泛型编程)

个人认为C++的学习可根据以下的思想转变来规划。这也大致与《Essential C++》一书的目录结构所一致,此书主要介绍关于c++的基础知识,且篇幅短小精悍,推荐阅读。此书也是本人阅读的第二本c++著作,并会在完成当前大部头之后对书中内容再作梳理。

基本语法与编译原理

面向过程编程 -- 以变量与函数为主角

基于对象编程 -- 以类为主角

面向对象编程 -- 以类为主角,并结合抽象、封装、多态等思想

泛型编程 -- 以STL(标准模板库)为学习根基

模板与模板元编程 -- c++高级应用

集成开发环境

集成开发环境(IDE,Integrated Development Environment),是用于提供程序开发环境的应用程序,一般包括代码编辑器、编译器、调试器和图形用户界面等工具。集成了代码编写功能、分析功能、编译功能、调试功能等一体化的开发软件服务套(来自百度百科)。

说白了,集成开发环境就是我们日常编码的工作台,是进行编码并得到最终可执行文件的工具。工欲善其事,必先利其器。选择一个称心顺手赏心悦目的IDE对程序员来说其重要性不亚于寻找心上之人。下面介绍几款笔者目前接触过并感觉良好的<心上人>。

visual studio 20xx

visual studio(简称vs)系列是微软提供的巨型IDE,支持几乎所有语言的开发,说是windows平台上最完备的IDE也不为过,尤其对进行c++、c#等语言开发的用户来说。

但是visual studio的缺点也很明示,过大的安装包及安装后的大小,龟速的启动速度,对电脑配置的高要求,都使其看起来略显笨重,用起来更是如此。

如果你不喜欢太过笨重的东西,或者你的电脑配置不怎么样,或者你在使用一些脚本语言进行开发,或者你是一名竞赛党,在无休止地刷题ac,那么visual studio基本上与你无缘了。

如果你正在参与某个大型项目的开发,或者是自己在做一个比较完整的工程项目的话,那么visual studio无疑是你最好的选择。

visual studio可在微软官网下载,其中社区版免费使用,功能也比较全,企业版的话有的版本也可以找到激活版,但是用起来其实和社区版差别不大,强迫症患者可以考虑。

visual studio code

visual studio code(简称vscode)也是微软近年提供的新的工具,它的定位是轻量级、高速、灵活、美观。也是对笨重的vs的一个弥补。

vscode运行十分迅速,十分适合进行轻量级的脚本开发,更是阅读代码的利器。与此同时,vscode包含大量官方以及用户自制的扩展包,几乎所有的语言都有其扩展工具以支持其在vscode上开发及运行,甚至于说c++这样的大型语言。用户完全可以利用这些扩展包将vscode变成自己在某个领域专用的开发利器。

推荐前端开发人员及脚本语言使用者使用。竞赛党也可以装个c++套件和vim插件来飞速刷题。

vscode也可以在微软官网下载。另外,vscode是开源的,其源码可在vscode的github源码地址找到。

codeblocks

codeblocks(简称cb)也是一款经典的c++IDE,轻量级,适合竞赛党,但是对vim的支持不是很友好,有一个叫做 cbVike的插件用来支持vim,但是安装过程很复杂且容易出错,笔者已弃坑。

下载地址codeblocks官网下载

dev c++

上古IDE,早期被广泛应用于竞赛与教学。笔者因难以容忍其相貌而放弃使用。

还是贴个下载地址devc++下载

vim

vim就不用多说了,笔者的最爱,可移步tools查看笔者的相关博文。

xcode

mac系统专用IDE。土豪专用,笔者没用过(哭哭~~)。

编译与链接

在接下来的教程里,我们会使用c++语言编写.cpp.h格式的文件。那么这些文件是如何工作的呢?或者说是如何转换成计算机硬件所能读懂的汇编代码甚至机器代码,最后转变成二进制码供硬件运行的呢?这就涉及到编译原理相关的知识了。但是我们这里不会按照编译原理的知识体系进行详细的解读,只对c++语言的编译过程作一个简单的介绍,毕竟我们现在不是从底层硬件的角度去学习计算机语言的。

使用c++语言编写好的.cpp.h文件经过编译工具(大多数时候为g++)编译,首先会生成目标文件.o。目标文件经过__链接__生成最终的.out文件或者.exe文件,即为最终的可执行文件。

对于编译与链接,笔者会在编译原理部分详细论述,目前对于c++的学习仅作了解即可。

以linux平台为例,我们使用g++(gun c++编译器)命令来生成目标文件和可执行文件,其命令的一般形式如下。

1
$ g++   -option   destination_file   source_file   

其中-option有以下几种选项。

-c 生成目标文件

-o 生成可执行文件

-I 头文件所在路径

-L 库文件所在路径

-l 要连接的库文件的名字

-d 用字符串 '1' 定义宏