重读c++primer
sinjing
这个作者很懒,什么都没留下…
展开
-
【共读Primer】5. 篇外篇----关于Sales_item
先将一段代码贴出,这段代码是结合描述和一些经验写出来的 但是代码并没有仔细的斟酌过,我们共同来分析一下 #ifndef SALESITEM_H #define SALESITEM_H #include <iostream> #include <string> class Sales_item{ public: Sales_item(const std::s...原创 2018-08-02 23:07:57 · 260 阅读 · 0 评论 -
【共读Primer】7.[2.1] 基本内置类型(1) Page29
C++的数据类型是用来对内存的指定区域描述含义及可执行操作的。 类型 含义 最小尺寸 bool 布尔类型 未定义 char 字符 8位 wchar_t 宽字符 16位 char16_t Unicode字符 16位 char32_t Unicode字符 32位 short 短整形 1...原创 2018-08-03 11:57:57 · 122 阅读 · 0 评论 -
【共读Primer】7.篇外篇----关于字符的一些事
首先在这里要感谢我们无比伟大的祖先,给了我们汉字这样牛气冲天的东西。 所以计算机里的汉语也是很有故事的,今天来和大家聊聊这些事 先从哪里说起呢? 从汉字编码说起吧,当前计算机中使用的与中文有关的编码 GB2312-80:1980年颁布的国标, GBK:1995年颁布的国标,GB2312的一个扩展字符集,兼容GB2312的所有编码,现在汉字的主流字符集 GB18030-2000: GBK...原创 2018-08-03 12:02:05 · 180 阅读 · 0 评论 -
【共读Primer】8.[2.1] 基本内置类型(2) Page32
虽然C++中的类型是强制声明的,但是这并不意味着不同类型之间不可以进行一些计算或赋值。 我们来看下面的一组代码 #include <iostream> int main() { bool b = 42; int i = b; double pi = i; unsigned char c = -1; signed char c2 = 25...原创 2018-08-03 12:08:25 · 129 阅读 · 0 评论 -
【共读Primer】11.[2.4] const限定符 Page53
const 用来修饰变量的不可改变性质。 比如缓冲区的大小,屏幕的尺寸,这种一般不会改变,但是会多出使用的东西 我们可以声明为const类型,以方便不会不小心被修改掉,另一方面在我们需要修改的时候会很方便 除过写的操作,const对象与非const对象没有 差别。 int i =42; const int ci = i; // i的值被拷贝给了ci int j = ci; ...原创 2018-08-08 10:57:31 · 108 阅读 · 0 评论 -
【共读Primer】12.[2.5]处理类型 Page60
对于一些难于理解的,不好被表述的类型,我们如何能够快速有效的传达我们的意思? 如果有以下这样一个数据类型,那么我们光声明一个迭代器类型就要写几十个字符 而且这样的写法不便于记忆,如果有两个类型一样但是作用不同的相同结构,那么可能就会出错 // 如果有如下的数据集合,用来表示数据的 std::map<std::string, std::map<int, std::string&...原创 2018-08-08 10:59:24 · 152 阅读 · 0 评论 -
【共读Primer】13.[2.6] 自定义数据结构 Page64
在C++中所有数据组合的类型都是自定义的数据结构。 包括我们常常使用的string、istream、ostream等。 一个简单的类型定义,以struct开头进行书写。 //Sales_data.h #include <string> struct Sales_data { std::string bookNo; unsigned units_sold = 0...原创 2018-08-13 20:09:26 · 120 阅读 · 0 评论 -
【共读Primer】14.[3.1] 命名空间 Page74
我们一直在写的std::cout 其中std就是一个命名空间 “::” 则是作用域操作符 std::cout 意思就是在命名空间std中寻找cout的定义。 使用using声明可以无需作用域操作符直接使用对应的对象 using std::cin; // 使用using声明后,就可以直接使用该对象 每个名字都需要有独立的using声明。 #include <iostream&g...原创 2018-08-13 20:11:38 · 96 阅读 · 0 评论 -
【共读Primer】17.[3.4] 迭代器 Page95
容器的通用访问机制 迭代器。 迭代器的有效范围是 容器内容范围和容器结尾元素的下一个位置,其余都是无效的 从上图中可以看出一个迭代器的有效范围,当然不是所有的容器都是线性存储的,这里只做一个示意。 1. 使用迭代器 vector<int> vecInt = {1,2,3,4,5,6}; for (auto it = vecInt.begin(); it != vec...原创 2018-08-16 20:36:29 · 122 阅读 · 0 评论 -
【共读Primer】6.[1.6] 书店程序 Page21
第一章的一个小结 完成一个书店程序 从销售记录中生成销售报告 销售报告包含 书籍的ISBN、售出册数、总销售额、平均售价 #include <iostream> #include "Sales_item.h" // 包含对应的类型头文件 这是老王家的信息,我们要去借刀 int main(int argc, char const *argv[]) { Sale...原创 2018-08-02 23:05:03 · 280 阅读 · 0 评论 -
【共读Primer】5.[1.5] 类简介 Page17
在类的使用之前我们需要了解的三件事情: 类名是什么 它在哪里定义的 它提供了哪些操作 每一个类都是一个新的类型,类名就是类型的名称。 假设我们现在有一个类,名称是Sales_item, 这个类用来表示一本书的总销售额、售出册数、平均售价。 Sales_item item; 上方代码需要表达的意思就是一个对象item,它的类型是Sales_item 那么这个对象可以执行什么操作。 ...原创 2018-08-02 23:02:57 · 213 阅读 · 0 评论 -
【共读Primer】16.[3.3] 标准库类型Vector Page86
vector 模版类型,用来保存任意类型,所以又称为容器。 一 定义和初始化 (1)默认初始化,长度为空 vector<T> v1; // 空初始化 (2)列表初始化vector [C++11] vector<string> v1{"a", "an", "the"}; (3)值初始化 vector<int> ..原创 2018-08-14 22:32:50 · 109 阅读 · 0 评论 -
重读c++primer (第五版) -- 引子
最近在接触新项目,这个过程中需要掌握一些新技术,有些技术的出发点很底层,让我感觉在某个职位上待得时间太长会很注重某方面的能力而放松了一些基础,当然这个问题在工作的轨道不出现变化的时候是很难被注意到的。 由于新项目和新的技术引入,让我意识到了这一点。现在回头想想,在自己追寻在当前的职位上获得更大的发展的时候,总是想为这个项目做出更大的,达到足以引起一些关注的贡献的时候,我们的眼光就放的很远。当然我并不原创 2015-04-08 23:49:31 · 312 阅读 · 0 评论 -
【共读Primer】写在前面的话
希望看我文章的人可以先看看前面的这段话 从今天开始我来分享一下c++primer第五版的读书记录。 先做个自我介绍,07年毕业,08年正式工作,10年间唯一的职业是程序员。 唯一的技能是c++,可以说c++常用的技术点我基本都掌握了。 可以说从数据结构到设计模式,从算法到框架都有所涉猎,但是总觉得还缺点什么。 孔子有云,温故而知新,也由于公司的底层库升级,需要全面掌握C++11的主要特性...原创 2018-07-31 11:12:57 · 122 阅读 · 0 评论 -
【共读Primer】1.[1.1]简单的C++程序 Page2
int main() { return 0; } 以上一个简单的程序就已经完成了,算上格式行一共才4行。 放心这个代码绝对可以成功编译。 唯一干活的部分只有return 0;这一句,只是没什么卵用。 整个结构分为四部分: 返回值类型、函数名、参数列表、函数体 那么程序写好之后就是编译和运行了。 关于编译: 编译的作用:将程序语言代码编程机器语言代码 编译的工...原创 2018-07-31 11:20:22 · 116 阅读 · 0 评论 -
【共读Primer】2. [1.2]初识输入输出 Page5
写完了一个程序,运行了没什么卵用,心里很不爽啊。 这一节是输入输出,只要有了它就能够看到运行的效果了。 #include &lt;iostream&gt; // 标准库中输入输出流的库名称 int main() { std::cout &lt;&lt; "Enter two numbers:" &lt;&lt; std::endl;// 输出一个提示信息的字符串,并原创 2018-07-31 11:32:43 · 131 阅读 · 0 评论 -
【共读Primer】3.[1.3]注释简介 Page8
C++的注释有两种 双斜杠开始到本行结束 (//) 斜杠星开始 星斜杠结束 (/)(/) #include <iostream> // 标准库中输入输出流的库名称 /* * 简单主函数: * 读取两个数,求它们的和 */ int main() { std::cout << "Enter two numbers:" << std::endl;/...原创 2018-08-01 11:16:47 · 91 阅读 · 0 评论 -
【共读Primer】4.[1.4] 控制流 Page10
三种流程控制的书写方法如下: while(条件) // 直到条件为假(false) 否则一直循环执行大括号内的代码 { 执行代码 } for(初始化; 条件; 表达式) // 首先执行一次初始化,然后在条件为真的情况下循环执行大括号内的代码,并在每次执行完代码后执行一次表达式 { 执行代码 } if(条件) // 从上到下查找每一个条件,直到某个条件为真则执行相应的代码块...原创 2018-08-01 11:22:19 · 106 阅读 · 0 评论 -
【共读Primer】9.[2.2] 变量 Page38
定义方式为在类型说明符后紧跟一个或多个变量名 int sum = 0, value, // sum、value和units_sold都是int units_sold = 0; // sum和units_sold初始值为0 Sales_item item; // item的类型是Sales_item // string 是一种库类型,表示一个可变长的字符序列 std:...原创 2018-08-07 09:42:01 · 116 阅读 · 0 评论 -
【共读Primer】10.[2.3] 复合类型 Page45
C++的复合类型 引用和指针 引用就像是类型的别名 int ival = 1024; int &refVal = ival; // int &refVal2 ; // 报错:引用必须被初始化 int &refVal1 = ival, &refVal2 = ival, &refVal3 = refVal1, Val4=ival; // refVal1/...原创 2018-08-07 09:46:10 · 123 阅读 · 0 评论 -
【共读Primer】15.[3.2] 标准库string Page75
标准库string 其具体代表的类型为可变长的字符序列。 使用string时需要包含以下代码: #include &lt;string&gt; // 包含头文件 using std::string // 进行using声明,可以免去每个string前std::的书写 初始化string对象 string s1; // 默认初始化,s1是 ...原创 2018-08-14 22:27:35 · 94 阅读 · 0 评论 -
【共读Primer】18.[3.5] 数组 Page101
存放相同的类型,大小声明后不可改变,性能上优于vector。 数组声明 a[d]; // a是名称。d是维度,也就是数组大小,必须是常量表达式 数组的元素会被默认初始化 数组的元素为对象,所以与vector相同,不存在以引用为元素的情况。 数组的显示初始化 const unsigned sz = 3; // 用来定义数组的维度,必须是常量 int ial[sz] = {0...原创 2018-08-16 20:40:09 · 160 阅读 · 0 评论