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