超硬核知识:两万字总结《C++ Primer》要点!

对于想要入门C++的同学来说,《C++ Primer》是一本不能错过的入门书籍,它用平易近人的实例化教学激发学生的学习兴趣,帮助学生一步步走进C++的大门。在本文中,作者Jacen用两万多字总结了《C++ Primer 中文版(第五版)》1-16章的阅读要点,可以作为该书的阅读参考。现在到了第六版也没关系。注:原书更为详细,本文仅作学习交流使用。

超硬核知识:两万字总结《C++ Primer》要点!_第1张图片

第一章 开始

1.1 编写一个简单的C++程序

超硬核知识:两万字总结《C++ Primer》要点!_第2张图片

每个C++程序都包含一个或多个函数,其中一个必须命名为main.

1.2 初识输入输出

超硬核知识:两万字总结《C++ Primer》要点!_第3张图片

1.3 注释简介

两种:

单行注释://

界定符:/ 和 /

1.4 控制流

while;for;if;

第二章 变量和基本类型

P30-P71

数据类型是程序的基础。C++语言支持广泛的数据类型。

基本内置类型

1.算术类型

超硬核知识:两万字总结《C++ Primer》要点!_第4张图片

2.类型转换

不要混用符号类型和无符号类型。

变量

1.变量定义

(1)基本形式:

类型说明符,随后紧跟着一个或者多个变量名组成的列表,其中变量名以逗号分隔,最后以分号结束。

(2)初始值

在C++中,初始化和赋值是2个完全不同的操作。初始化的含义是创建变量的时候赋予一个初始值,而赋值的含义是把对象的当前值擦除,用一个新值来替代。两者区别很小。

(3)列表初始化

用花括号来初始化变量的方式,称为列表初始化。

(4)默认初始化

如果定义变量没有指定初始值,则变量被默认初始化。

::: tip

例外情况:

定义在函数体内部的内置类型变量将不被初始化,其值未定义。

建议初始化每个内置类型的变量。:::

2.变量声明和定义的关系

变量声明:规定了变量的类型和名字。

变量定义:除声明之外,还需要申请存储空间。

如果想声明一个变量,而非定义它,需要使用extern关键词。

::: tip变量只能被定义一次,但可以被多次声明。:::

3.名字的作用域

作用域:C++中大多数作用域都用花括号分隔。

作用域中一旦声明了某个名字,它所嵌套的所有作用域都能访问该名字。同时,允许在内层作用域中重新定义外层作用域中有的名字。

::: warning如果函数有可能用到某全局变量,则不宜再定义一个同名的局部变量。:::

复合类型

定义:复合类型是基于其他类型定义的类型。

1.引用

引用:为对象起另外一个名字。

::: warning引用必须被初始化。引用本身不是对象,所以不能定义引用的引用。引用要和绑定的对象严格匹配。引用类型的初始值,必须是一个对象。:::

超硬核知识:两万字总结《C++ Primer》要点!_第5张图片

const限定符

定义:const用于定义一个变量,它的值不能被改变。const对象必须初始化。

::: tip

默认状态下,const对象仅在文件内有效。当多个文件出现了同名的const变量时,等同于在不同文件中分别定义了独立的变量。

如果想让const变量在文件间共享,则使用extern修饰。

:::

(1)const的引用

允许为一个常量引用绑定非常量的对象、字面值,甚至是个一般表达式。

一般,引用的类型必须与其所引用对象的类型一致,特殊情况是表达式。

(2)指针和const

弄清楚类型,可以从右边往左边阅读。

(3)顶层const

top-level const 表示指针本身是个常量

low-level const表示指针所指的对象是一个常量。

(4)constexpr和常量表达式

C++新标准规定,允许将变量声明为constexpr类型以便由编译器来验证变量的值是否是一个常量表达式。

处理类型

超硬核知识:两万字总结《C++ Primer》要点!_第6张图片

自定义数据结构

(1)类

数据结构是把一组相关的数据元素组织起来,然后使用它们的策略和方法。

类一般不定义在函数体内,为了确保各个文件中类的定义一致,类通常被定义在头文件中,而且类所在头文件的名字应该与类的名字一样。

头文件通常包含那些被定义一次的实体。

(2)预处理器

超硬核知识:两万字总结《C++ Primer》要点!_第7张图片

一般把预处理变量的名字全部大写。

术语

空指针 :值为0的指针,空指针合法但是不指向任何对象。nullPtr是表示空指针的字面值常量。

void*:可以指向任意非常量的指针类型,不能执行解引用操作。

第三章 字符串、向量和数组

P74-P118

string表示可变长的字符序列,vector存放的是某种给定类型对象的可变长序列。

命名空间的 using 声明

头文件不应包含using声明。

标准库类型 string

超硬核知识:两万字总结《C++ Primer》要点!_第8张图片

标准库类型 vector

超硬核知识:两万字总结《C++ Primer》要点!_第9张图片

迭代器介绍

超硬核知识:两万字总结《C++ Primer》要点!_第10张图片

数组

超硬核知识:两万字总结《C++ Primer》要点!_第11张图片

多维数组

超硬核知识:两万字总结《C++ Primer》要点!_第12张图片

术语

begin string和vector的成员,返回指向第一个元素的迭代器。也是一个标准库函数,输入一个数组,返回指向该数组首元素的指针。

end string和vector的成员,返回一个尾后迭代器。也是一个标准库函数,输入一个数组, 返回指向该数组尾元素的下一个位置的指针。

第四章 表达式

P120-P151

4.1 基础

重载运算符:为已经存在的运算符赋予了另外一层含义。

左值、右值:

当一个对象用作右值得时候,用的是对象的值(内容)。

当对象被用作左值得时候,用的是对象的身份(在内存中的位置)。

4.2 算术运算符

%:参与取余运算的运算对象必须是整数类型。

4.3 逻辑和关系运算符

超硬核知识:两万字总结《C++ Primer》要点!_第13张图片

&& 运算符和 || 运算符都是先求左侧运算对象的值再求右侧运算对象的值。

::: warning

进行比较运算的时候,除非比较的对象是bool类型,否则不要使用布尔字面值true,false作为运算对象。

:::

4.4 赋值运算符

超硬核知识:两万字总结《C++ Primer》要点!_第14张图片

4.5 递增和递减运算符

递增运算符 ++

递减运算符 —

4.6 成员访问运算符

超硬核知识:两万字总结《C++ Primer》要点!_第15张图片

4.7 条件运算符

4.8 位运算符

超硬核知识:两万字总结《C++ Primer》要点!_第16张图片

4.9 sizeof运算符

超硬核知识:两万字总结《C++ Primer》要点!_第17张图片

4.10 逗号运算符

逗号运算符含有两个运算对象,按照从左向右的顺序依次求值。

4.11 类型转换

超硬核知识:两万字总结《C++ Primer》要点!_第18张图片

4.12 运算符优先级表

第五章 语句

超硬核知识:两万字总结《C++ Primer》要点!_第19张图片

超硬核知识:两万字总结《C++ Primer》要点!_第20张图片

超硬核知识:两万字总结《C++ Primer》要点!_第21张图片

第六章 函数

超硬核知识:两万字总结《C++ Primer》要点!_第22张图片

超硬核知识:两万字总结《C++ Primer》要点!_第23张图片

超硬核知识:两万字总结《C++ Primer》要点!_第24张图片

超硬核知识:两万字总结《C++ Primer》要点!_第25张图片

超硬核知识:两万字总结《C++ Primer》要点!_第26张图片

第七章 类

P228-P273

类的基本思想是数据抽象和封装。

抽象是一种依赖于接口和实现分离的编程技术。

封装实现了类的接口和实现的分离。

超硬核知识:两万字总结《C++ Primer》要点!_第27张图片

超硬核知识:两万字总结《C++ Primer》要点!_第28张图片

超硬核知识:两万字总结《C++ Primer》要点!_第29张图片

超硬核知识:两万字总结《C++ Primer》要点!_第30张图片

超硬核知识:两万字总结《C++ Primer》要点!_第31张图片

超硬核知识:两万字总结《C++ Primer》要点!_第32张图片

超硬核知识:两万字总结《C++ Primer》要点!_第33张图片

超硬核知识:两万字总结《C++ Primer》要点!_第34张图片

超硬核知识:两万字总结《C++ Primer》要点!_第35张图片

第八章 IO库

超硬核知识:两万字总结《C++ Primer》要点!_第36张图片

超硬核知识:两万字总结《C++ Primer》要点!_第37张图片

第九章 顺序容器

超硬核知识:两万字总结《C++ Primer》要点!_第38张图片

超硬核知识:两万字总结《C++ Primer》要点!_第39张图片

超硬核知识:两万字总结《C++ Primer》要点!_第40张图片

超硬核知识:两万字总结《C++ Primer》要点!_第41张图片

超硬核知识:两万字总结《C++ Primer》要点!_第42张图片

超硬核知识:两万字总结《C++ Primer》要点!_第43张图片

超硬核知识:两万字总结《C++ Primer》要点!_第44张图片

超硬核知识:两万字总结《C++ Primer》要点!_第45张图片

超硬核知识:两万字总结《C++ Primer》要点!_第46张图片

超硬核知识:两万字总结《C++ Primer》要点!_第47张图片

超硬核知识:两万字总结《C++ Primer》要点!_第48张图片

超硬核知识:两万字总结《C++ Primer》要点!_第49张图片

超硬核知识:两万字总结《C++ Primer》要点!_第50张图片

超硬核知识:两万字总结《C++ Primer》要点!_第51张图片

超硬核知识:两万字总结《C++ Primer》要点!_第52张图片

第十章 泛型算法

超硬核知识:两万字总结《C++ Primer》要点!_第53张图片

超硬核知识:两万字总结《C++ Primer》要点!_第54张图片

超硬核知识:两万字总结《C++ Primer》要点!_第55张图片

超硬核知识:两万字总结《C++ Primer》要点!_第56张图片

超硬核知识:两万字总结《C++ Primer》要点!_第57张图片

超硬核知识:两万字总结《C++ Primer》要点!_第58张图片

超硬核知识:两万字总结《C++ Primer》要点!_第59张图片

第十一章 关联容器

超硬核知识:两万字总结《C++ Primer》要点!_第60张图片

超硬核知识:两万字总结《C++ Primer》要点!_第61张图片

超硬核知识:两万字总结《C++ Primer》要点!_第62张图片

超硬核知识:两万字总结《C++ Primer》要点!_第63张图片

超硬核知识:两万字总结《C++ Primer》要点!_第64张图片

超硬核知识:两万字总结《C++ Primer》要点!_第65张图片

第十二章 动态内存

超硬核知识:两万字总结《C++ Primer》要点!_第66张图片

超硬核知识:两万字总结《C++ Primer》要点!_第67张图片

超硬核知识:两万字总结《C++ Primer》要点!_第68张图片

超硬核知识:两万字总结《C++ Primer》要点!_第69张图片

超硬核知识:两万字总结《C++ Primer》要点!_第70张图片

超硬核知识:两万字总结《C++ Primer》要点!_第71张图片

第十三章 拷贝控制

超硬核知识:两万字总结《C++ Primer》要点!_第72张图片

超硬核知识:两万字总结《C++ Primer》要点!_第73张图片

超硬核知识:两万字总结《C++ Primer》要点!_第74张图片

超硬核知识:两万字总结《C++ Primer》要点!_第75张图片

13.3 交换操作

swap

13.4 拷贝控制示例

P460

13.5 动态内存管理类

P464

超硬核知识:两万字总结《C++ Primer》要点!_第76张图片

超硬核知识:两万字总结《C++ Primer》要点!_第77张图片

第十四章 重载运算与类型转换

超硬核知识:两万字总结《C++ Primer》要点!_第78张图片

超硬核知识:两万字总结《C++ Primer》要点!_第79张图片

超硬核知识:两万字总结《C++ Primer》要点!_第80张图片

超硬核知识:两万字总结《C++ Primer》要点!_第81张图片

超硬核知识:两万字总结《C++ Primer》要点!_第82张图片

超硬核知识:两万字总结《C++ Primer》要点!_第83张图片

第十五章 面向对象程序设计

超硬核知识:两万字总结《C++ Primer》要点!_第84张图片

超硬核知识:两万字总结《C++ Primer》要点!_第85张图片

超硬核知识:两万字总结《C++ Primer》要点!_第86张图片

超硬核知识:两万字总结《C++ Primer》要点!_第87张图片

超硬核知识:两万字总结《C++ Primer》要点!_第88张图片

超硬核知识:两万字总结《C++ Primer》要点!_第89张图片

超硬核知识:两万字总结《C++ Primer》要点!_第90张图片

超硬核知识:两万字总结《C++ Primer》要点!_第91张图片

超硬核知识:两万字总结《C++ Primer》要点!_第92张图片

第十六章 模板与泛型编程

P578-P630

(1)控制实例化

当编译器遇到extern模板声明时,它不会在本文件中生成实例化代码。将一个实例化声明为extern就表示承诺在程序其他位置有该实例化的一个非extern声明(定义)。对于一个给定的实例化版本,可能有多个extern声明,但必须只有一个定义。

(2)模板是标准库的基础。

生成特定类或者函数的过程称为实例化。

(3)术语

类模板:模板定义,可从它实例化出特定的类。类模板的定义以关键词template开始,后面跟尖括号对<和>,其内为一个用逗号分隔的一个或多个模板参数的列表,随后是类的定义。

函数模板:模板定义,可从它实例化出特定函数。函数模板的定义以关键词template开始,后跟尖括号<和>,其内以一个用逗号分隔的一个或多个模板参数的列表,随后是函数的定义。

《C++ Primer》

[美] Stanley B. Lippman,Josee Lajoie,Barbara E. Moo 著

王刚 杨巨峰 译

如果只读一本C++书,本书将是你永不局悔的选择

如果只读一本C++书籍,相信所有读过的人都会毫不犹豫选择《C++ Primer(中文版)》,无论初学或老手既可用来理解C++11规则背后的原理,也可用其新语言特性与标准库来快速构建健壮程序,采用中文版页码全面呈现原书大量交叉引用及详尽索引,新式辅学设置与课后操练用于避开陷阱、巩固良法!


写在最后:对于准备成为一名优秀程序员的朋友,如果你想更好的提升你的编程核心能力(内功),让自己成为一个具有真材实料的厉害的程序员,不妨从现在开始!C/C++,永不过时的编程语言~

C语言C++编程学习交流圈子,QQ群:904329806点击进入】微信公众号:C语言编程学习基地

整理分享(多年学习的源码、项目实战视频、项目笔记,基础入门教程)

欢迎转行和学习编程的伙伴,利用更多的资料学习成长比自己琢磨更快哦!

编程学习书籍分享:

超硬核知识:两万字总结《C++ Primer》要点!_第93张图片

 编程学习视频分享:

超硬核知识:两万字总结《C++ Primer》要点!_第94张图片

你可能感兴趣的:(C++,c++,C++书籍,C++入门,编程)