C++
《C++ Primer》第五版 电子工业出版社 王刚 杨巨峰译
一只小汤姆
本人还处于学习阶段,且习惯于打下知识框架再慢慢填充,所有部分篇博文可能无主要内容,只有目录大纲,希望大家谅解。而且本人的文章按专栏从上到下看最好,这样知识层层递进,由浅入深。最好再配合着习题,建立知识框架。
2022.4.23更新:一年前用onenote记笔记,没管这个平台了,以后开始整理一下。
展开
-
注释
目录函数的四部分①返回类型②函数名③参数列表④函数体注释①单行注释②界定符注释 函数的四部分 每个C++语言都包含一个或多个函数,其中一个必须为main函数。 ①返回类型 main函数的默认返回类型为int型。且返回值被用来表示状态,0表示成功,非0表示其他意义。返回值必须与返回类型相同。 ②函数名 ③参数列表 ④函数体 { 以左花括号开始,右花括号结束的语句块。 } 注释 ①单行注释 经常用于,在调试程序期间,注释掉代码的每一行。(*由于界定符不嫩嵌套,易出错) ②界定符注释 /* 和 */为两个原创 2020-06-11 17:58:28 · 93 阅读 · 0 评论 -
基本数据类型
基本内置类型 算术类型 类型转换 字面值常量 变量 变量定义 变量声明和定义的关系 标识符 名字的作用域 复合类型 引用 指针 理解复合类型的声明 const限定符 const的引用 指针和const 顶层const constexpr和常量表达式 处理类型 类型别名 auto类型说明符 decltype类型标识符 自定义数据类型 定义Sales_data类型 使用Sales_data类 编写自己的头文件 ...原创 2020-06-12 08:47:35 · 87 阅读 · 0 评论 -
复合数据类型
目录1. 引用2. 指针3. const限定符 数据类型 + 声明符 + 变量列表。 1. 引用 数据类型 &引用名 = 原变量名; 注意: 引用必须被初始化。 引用的过程是两者值的绑定,而不是拷贝。 只能引用对象,不能定义引用的引用。 对引用的操作即对原变量得操作 2. 指针 理解复合类型的声明 3. const限定符 const对象必须初始化,一旦创建其值无法改变,否则出错。 const的引用 指针和const 顶层const constexpr和常量表达式 注意: 默认情况下,cons原创 2020-07-11 09:31:07 · 217 阅读 · 0 评论 -
类型处理
目录1. 类型别名2. auto类型说明符3. decltype类型标识符 1. 类型别名 typedef 原类型名 新类型名; using 新类型名 = 原类型名; 注意: 不可简单的把类型别名替换成本来的样子来理解,要分段理解。 2. auto类型说明符 将表达式的值赋给auto变量时,编译器能将变量的数据类型自动转换成对应的表达式类型。 注意: auto定义的变量一定初始化,而且为表达式的值。 auto能在一条语句中声明多个变量。 3. decltype类型标识符 弥补auto类型必须初原创 2020-07-11 09:31:45 · 87 阅读 · 0 评论 -
类
定义抽象数据类型 定义类相关的非成员函数 构造函数 拷贝、赋值与析构 访问控制与封装 友元 类的其他特征 类成员再探 返回*this的成员函数 类类型 有元再谈 类的作用域 构造函数再探 构造函数初始值列表 委托构造函数 默认构造函数的作用 隐式的类类型转换 聚合类 字面值常量类 类的静态成员 附录:术语表 ...原创 2020-06-11 18:19:24 · 92 阅读 · 0 评论 -
变量
二、变量 变量提供一个具名的,可供程序员操作的储存空间。数据类型决定着变量所占空间的大小和布局分布。 变量定 : 类型名 + 变量名,其中变量名以逗号分隔,最后以分号结束,定义时可赋值。 1. 初始化 列表初始化 int a = 0; int a = {0}; int a{0}; int a(0); //等价 *如果使用列表初始化且初始值存在丢失信息的风险,则编译器将报错。 默认初始化 (1)如果内置类型的变量未被显式初始化,它的值由定义的位置决定。①定义于任何函数体之外的变量被初始化为0;②定义在原创 2020-07-11 08:51:25 · 85 阅读 · 0 评论 -
字符串、向量和数组
命名空间的using声明 标准库类型string 定义和初始化string对象 string对象上的操作 处理string对象中的字符 标准库类型vector 定义和初始化vector对象 像vector对象中添加元素 其他vector操作 迭代器介绍 使用迭代器 迭代器运算 数组 定义和初始化内置数组 访问数组元素 指针和数组 C风格字符串 与旧代码的接口 ...原创 2020-06-12 08:50:45 · 360 阅读 · 1 评论 -
运算符
目录基本概念算数运算符逻辑和关系运算符赋值运算符递减和递增运算符成员访问运算符条件运算符位运算符sizeof运算符逗号运算符类型转换算数转换其他隐式类型转换显示转换附录:运算符优先级表 表达式由一个或多个运算对象组成。 把一个运算符和一个或多个运算对象组合起来可以产生教复杂的表达式。 复合表达式:含有两个或者多个运算符的表达式 基本概念 一元运算符 二元运算符 一元或者二元运算符 三元运算符 运算符优先级 结合律 求值顺序 重载运算符 左值 右值 算数运算符 逻辑和关系运算符 赋值运算符 递减和递增运算符原创 2020-06-11 18:11:01 · 65 阅读 · 0 评论 -
语句
简单语句 语句作用域 条件语句 if语句 switch语句 迭代语句 while语句 传统for语句 范围for语句 do while语句 跳转语句 break语句 continue语句 goto语句 try语句块解额异常处理 throw表达式 try语句块 标准异常 ...原创 2020-06-12 08:38:16 · 66 阅读 · 0 评论 -
函数
函数基础 局部对象 函数声明 分离式编译 参数传递 传值参数 传引用参数 const形参和实参 数组形参 main:处理命令行选项 含有可变形参的函数 返回类型 无返回值函数 有返回值函数 返回数组指针 函数重载 重载和作用域 特殊用途语言特征 默认参数 内联函数和constexpr函数 调试帮助 函数匹配 实参类型转换 函数指针 附录:术语表 ...原创 2020-06-11 18:15:00 · 78 阅读 · 0 评论 -
IO库
IO类 IO对象五拷贝或赋值 条件状态 管理输出缓冲 文件输入输出 使用文件流对象 文件模式 string流 使用istingstream 使用oistingstream原创 2020-06-11 18:31:05 · 104 阅读 · 0 评论 -
顺序容器
顺序容器概述 容器库概览 迭代器 容器类型成员 begin和end成员 容器定于和初始化 赋值和swap 容器大小操作 关系运算符 顺序容器操作 想顺序容器添加元素 访问元素 删除元素 特殊的forward_list操作 改变容器大小 容器操作可能使迭代器失效 vector对象使如何增长的 额外的string操作 构造string的其他方法 改变string的其他方法 string搜索操作 compare函数 数值转换 容器适配器 ...原创 2020-06-11 18:29:38 · 75 阅读 · 0 评论 -
泛型算法
概述 只读算法 写容器元素的算法 重拍容器元素的算法 定制操作 向算法传递函数 lambda表达式 lambda捕捉与返沪 参数绑定 再探迭代器 插入迭代器 iostream迭代器 反向迭代器 泛型算法结构 5类迭代器 算法形参模式 算法命名规范 特定容器算法 ...原创 2020-06-11 18:26:37 · 132 阅读 · 0 评论 -
关联容器
使用关联容器 关联容器概述 定义关联容器 关联字类型的要求 pair类型 关联器的操作 关联容器迭代器 添加元素 删除元素 map的下标操作 访问元素 一个单词转换的map 无序容器原创 2020-06-11 18:23:53 · 71 阅读 · 0 评论 -
动态内存
动态内存与只能指针 shared_ptr类 直接管理内存 shared_ptr类和new结合使用 只能指针和异常 unique_ptr weak_ptr 动态数组 new和数组 allocator类 使用标准库:文本查询程序 文本查询程序设计 文本查询程序类的定义 ...原创 2020-06-11 18:21:32 · 80 阅读 · 0 评论 -
拷贝控制
拷贝、赋值与销毁 考本构造函数 拷贝赋值运算符 析构函数 三五法则 使用default 组织拷贝 拷贝控制和资源管理 行为像值得类 定义行为像指针的类 交换操作 拷贝控制示例 动态内存管理类 对象移动 右值引用 移动构造函数和移动赋值运算符 右值引用和成员函数 ...原创 2020-06-11 19:27:00 · 79 阅读 · 1 评论 -
重载运算与类型运算
基本概念 输入和输出运算符 重载输出运算符<< 重载输入运算符>> 算术和关系运算符 相等运算符 关系运算符 赋值运算符 下标运算符 递增和递减运算符 成员访问运算符 函数调用运算符 lambda是函数对象 标准库定义的函数对象 可调用对象与function 重载、类型转换与运算符 类型转换运算符 避免有二义性的类型转换 函数匹配和重载运算符 ...原创 2020-06-12 08:43:29 · 83 阅读 · 0 评论 -
面向对象程序设计
OPP:概述 定义基类和派生类 定义基类 定义派生类 类型转换与继承 虚函数 抽象基类 访问控制与继承 继承中的类作用域 构造函数与拷贝控制 虚析构函数 和陈俄国拷贝控制与继承 派生类的拷贝控制成员 继承的构造函数 容器与继承 编写Basket类 文本查询程序再探 面向对象的解决方案 Query_base类和Query类 派生类 eval函数 ...原创 2020-06-12 08:31:56 · 70 阅读 · 0 评论 -
模板与泛型编程
定义模板 函数模板 类模板 模板参数 成员模板控制实例化 效率与灵活性 模板实参推断 类型转换与模板类型参数 函数模板显式实参 尾置返回类型与类型转换 函数指针的实参推断 模板实参推断和引用 理解std::move 转发 重载与模板 可变参数模板 编写课便参数函数模板 包扩展 转发参数包 模板特例化 ...原创 2020-06-11 18:45:19 · 71 阅读 · 0 评论 -
标准库特殊设施
tuple类型 定义和初始化tuple 使用tuple返回多个值 bitset类型 定义和初始化bitset bitset操作 正则表达式 使用正则表达式库 匹配与Regex迭代器类型 使用子表达式 使用regex_replace 随机数 随机数引擎和分布 其他随机数分布 IO库再探 格式化输出与输出 伟哥舒缓的输出与输出操作 流随机访问 ...原创 2020-06-11 18:41:57 · 87 阅读 · 1 评论 -
用于大型程序的工具
异常处理 抛出异常 捕获异常 函数try语句块与构造函数 noexcept异常说明 异常类层次 命名空间 命名空间的定义 使用命名空间成员 类、命名空间与作用域 重载和命名空间 多重继承域虚继承 多重继承 类型转换与多个基类 多重继承的类作用域 虚继承 构造函数域虚继承 ...原创 2020-06-11 18:39:27 · 86 阅读 · 0 评论 -
特殊工具与技术
控制内存分配 重载new和delete 定位new表达式 运行时类型识别 dynamic_cast运算符 typeid运算符 使用RTTI type_info类 枚举类型 类成员指针 数据成员的指针 成员函数的指针 将成员函数用作可调用对象 嵌套类 union:一种节省空间的类 局部类 固有的不可移植的特征 位域 volatile限定符 链接指示 ...原创 2020-06-11 18:37:15 · 106 阅读 · 0 评论 -
标准库
标准库名字和头文件 算法概览 查找对象的算法 其他制度算法 二分搜索算法 写容器元素的算法 划分与排序算法 通用重排操作 排列算法 有序序列的集合算法 最小值和最大值 数值算法 随机数 随机数分布 随机数引擎 ...原创 2020-06-11 18:33:58 · 99 阅读 · 0 评论 -
模板(template)
模板是抽象的方法 特点 模板不对应某种特定的数据类型,只是以一种抽象的方法,编译器会根据具体问题相应地生成特定的数据类型,这样就使得一个解决方案可以解决多个问题,相比于函数的重载更加简洁,但有时也不能替代重载。 重载与模板的选择 重载:对不同的数据类型,做不同的处理。 模板:对不同的数据类型,做相同的处理。 分类 函数模板 template<class T> //template<...原创 2020-04-14 16:29:21 · 263 阅读 · 0 评论 -
C++学习笔记之构造函数与析构函数
C++学习笔记之构造函数与析构函数构造函数特点作用析构函数特点作用疑问 class Car { public: int wheel; std::string color; Car(void);//声明构造函数 ~Car();//声明析构函数 }; 构造函数 Car::Car(void) //定义,其实也可以在声明时直接定义 { wheel = 4; color = "WHITE";...原创 2020-04-09 21:14:18 · 148 阅读 · 0 评论 -
C++学习笔记之函数的重载
C++学习笔记之函数的重载什么是函数的重载函数重载的要求1.参数的数据类型不同2.参数的个数不同函数重载的好处*注意事项 什么是函数的重载 多个函数(方法)可以使用同一个函数名 函数重载的要求 以一个加法的函数为例: 1.参数的数据类型不同 ① int a = 5, b = 6; int add(int a, int b);//对int型数据相加,在此结果为11 ② int a = 5.1, ...原创 2020-04-08 19:06:38 · 196 阅读 · 0 评论