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

一起学编程 一起学编程     2023-01-04     613

关键词:

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

第一章 开始

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

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

1.2 初识输入输出

1.3 注释简介

两种:

单行注释://

界定符:/ 和 /

1.4 控制流

while;for;if;

第二章 变量和基本类型

P30-P71

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

基本内置类型

1.算术类型

2.类型转换

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

变量

1.变量定义

(1)基本形式:

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

(2)初始值

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

(3)列表初始化

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

(4)默认初始化

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

::: tip

例外情况:

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

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

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

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

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

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

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

3.名字的作用域

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

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

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

复合类型

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

1.引用

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

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

const限定符

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

::: tip

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

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

:::

(1)const的引用

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

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

(2)指针和const

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

(3)顶层const

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

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

(4)constexpr和常量表达式

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

处理类型

自定义数据结构

(1)类

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

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

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

(2)预处理器

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

术语

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

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

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

P74-P118

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

命名空间的 using 声明

头文件不应包含using声明。

标准库类型 string

标准库类型 vector

迭代器介绍

数组

多维数组

术语

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

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

第四章 表达式

P120-P151

4.1 基础

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

左值、右值:

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

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

4.2 算术运算符

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

4.3 逻辑和关系运算符

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

::: warning

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

:::

4.4 赋值运算符

4.5 递增和递减运算符

递增运算符 ++

递减运算符 —

4.6 成员访问运算符

4.7 条件运算符

4.8 位运算符

4.9 sizeof运算符

4.10 逗号运算符

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

4.11 类型转换

4.12 运算符优先级表

第五章 语句

第六章 函数

第七章 类

P228-P273

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

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

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

第八章 IO库

第九章 顺序容器

第十章 泛型算法

第十一章 关联容器

第十二章 动态内存

第十三章 拷贝控制

13.3 交换操作

swap

13.4 拷贝控制示例

P460

13.5 动态内存管理类

P464

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

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

第十六章 模板与泛型编程

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++入门(代码片段)

C++入门文章目录C++入门C++关键字命名空间C++输入&输出缺省参数缺省参数概念缺省参数分类全缺省参数半缺省参数函数重载函数重载概念名字修饰extern"C"引用引用概念引用特性常引用引用的使用场... 查看详情

万字长文超硬核详细学习系列——深入浅出linux基础篇的知识点,值得你收藏学习必备(代码片段)

茫茫人海千千万万,感谢这一秒你看到这里。希望我的文章对你的有所帮助!愿你在未来的日子,保持热爱,奔赴山海!Linux基础篇目录1.Linux系统介绍1.1linux的概述1.2linux的优势1.3linux的分类1.4常见的发行版linux... 查看详情

万字长文超硬核详细学习系列——深入浅出linux高级篇的知识点,值得你收藏学习必备(代码片段)

茫茫人海千千万万,感谢这一秒你看到这里。希望我的文章对你的有所帮助!愿你在未来的日子,保持热爱,奔赴山海!Linux高级篇目录1.Linux的用户管理1.1添加用户1.2删除用户1.3查询用户信息1.4切换用户1.5对... 查看详情

超硬核!万字梳理文本生成图像!

点击机器学习算法与Python学习,选择加星标精彩内容不迷路选自Intento,作者:GrigorySapunov机器之心编译目前多模态任务成为行业热点,本文梳理了较为优秀的多模态文本图像模型:DALL·E、CLIP、GLIDE、DALL·E2(unCL... 查看详情

超硬核!万字梳理文本生成图像!

点击机器学习算法与Python学习,选择加星标精彩内容不迷路选自Intento,作者:GrigorySapunov机器之心编译目前多模态任务成为行业热点,本文梳理了较为优秀的多模态文本图像模型:DALL·E、CLIP、GLIDE、DALL·E2(unCL... 查看详情

超硬核!万字梳理文本生成图像!

点击机器学习算法与Python学习,选择加星标精彩内容不迷路选自Intento,作者:GrigorySapunov机器之心编译目前多模态任务成为行业热点,本文梳理了较为优秀的多模态文本图像模型:DALL·E、CLIP、GLIDE、DALL·E2(unCL... 查看详情

超硬核:linux系统内存知识

点击上方关注“终端研发部”设为“星标”,和你一起掌握更多数据库知识Linux内存是后台开发人员,需要深入了解的计算机资源。合理的使用内存,有助于提升机器的性能和稳定性。本文主要介绍Linux内存组织结构... 查看详情

半个月时间把mysql重新巩固了一遍,梳理了一篇几万字“超硬核”文章!(代码片段)

MySQL是最流行的关系型数据库管理系统,在WEB应用方面MySQL是最好的RDBMS(RelationalDatabaseManagementSystem:关系数据库管理系统)应用软件之一MySQL实战文章目录MySQL必会知识点梳理(必看)【介绍】什么是数据库MySQL数据库RDBMS术语... 查看详情

springboot2从入门到入坟|web场景开发篇:超硬核两万四千多字,全网最详细源码分析之静态资源配置原理,不是你来砍我

目录一览写在前面静态资源配置原理`WebMvcAutoConfiguration`自动配置类的详细分析是否生效?给容器中配了什么?揭秘`WebMvcAutoConfigurationAdapter`配置类揭秘`EnableWebMvcConfiguration`配置类资源处理的默认规则禁用所有静态资源配置规则源... 查看详情

超硬核!万字redis开发使用指南大总结(建议收藏)(代码片段)

RedisRedis是一个开源(BSD许可)的内存数据结构存储,用作数据库、缓存和消息代理。Redis提供数据结构,如strings,hashes,lists,sets,sortedsetswithrangequeries,bitmaps,hyperloglogs,geospatialindexes,andstreams.。Redis具有内置 查看详情

自定义类型的这些知识你知道吗?c语言超硬核结构体枚举联合体画图+文字详细讲解(代码片段)

自定义类型详解(结构体+枚举)数据经常以成组的形式存在。例如,一本书必须指定书名,书的价格,书号。如果这些值能够存储在一起,访问起来会很简单。但是如果这些值的类型不同,它们无法存储在数... 查看详情

两万字长文,史上最全c++年度总结!

...一次C++直播对话,在非常短的时间内就吸引了两万多开发者观看,足以说明C++在开发者中的影响力。本文的四位作者联合撰文,写下了这篇两万字的长文,深度总结了C++的新进展,以及未来... 查看详情

两万字长文,史上最全c++年度总结!

...一次C++直播对话,在非常短的时间内就吸引了两万多开发者观看,足以说明C++在开发者中的影响力。本文的四位作者联合撰文,写下了这篇两万字的长文,深度总结了C++的新进展,以及未来... 查看详情

欢度中秋|超硬核资料大放送(再送20件好礼)

中秋将近,亮哥先在这里祝大家节日快乐。但该放松要放松,该卷还是得稍微卷一卷。学习是一个持久的过程,重在坚持,所以每天上下班,亮哥都坚持看一些公众号,学习里面总结的各种知识点,长... 查看详情

保姆级教程css两万字笔记大总结建议收藏(上篇)(代码片段)

❤️CSS必备知识详解❤️第一部分:CSS的基本使用(1)CSS是什么?(2)CSS写在哪里?(3)CSS的三大引入方式:1.直接写在标签内(直接在标签内设置)小知识点:2.写在style标签... 查看详情

两万字vue基础知识总结,小白零基础入门,跟着路线走,不迷路(建议收藏)(代码片段)

立志存高远,笃行践初心  三更灯火五更鸡,正是男儿读书时。黑发不知勤学早,白首方悔读书迟。立志,标定人生方向;奋斗,创造人生价值,二者相辅相成,互相促进。大部分程序员的「目标... 查看详情

整理了将近三万字,超硬核bio,nio,aio,netty超越99%io文章(面试题+综合案例+练习题)(代码片段)

Java面试题IO篇所有题目均来自互联网,整合不易希望大家沉下心来,认真学习。一键三连加关注就是对博主最大的支持!菜鸟教程地址:https://www.runoob.com/java/java-files-io.html文章目录Java面试题IO篇前言BIO、NIO、AIO、... 查看详情

[数据结构]——线性表总结(c语言代码实现)爆肝两万字!(代码片段)

线性表总结文章目录线性表总结一,顺序表1,头文件2,C文件3,测试菜单文件(menu)4,顺序表的优缺点二,单链表1,头文件2,C文件3,测试文件4,带头链表和不带头链表三,... 查看详情