【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' 定义宏