
C++Primer(第五版)学习笔记
敬畏者
知其所以然
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
(一)常规基本概念
iostream流,术语"流"的概念是,字符是自动顺序生成或消耗的.程序执行语义为优先考虑.程序尽可能反应本质,容易知其所以然.原创 2014-02-18 17:23:29 · 594 阅读 · 0 评论 -
(十三)拷贝控制
拷贝构造函数:构造函数第一个参数是原创 2014-06-25 10:02:50 · 468 阅读 · 0 评论 -
(十四)重载与类型转换
有求值顺序的运算符不应该被重载,否则会破坏求职顺序,与以前保持的原创 2014-06-26 08:34:38 · 517 阅读 · 0 评论 -
(十六)模板与泛型编程
template typename为关键字,T为原创 2014-06-27 01:32:18 · 375 阅读 · 0 评论 -
(十七)标准库特殊设施
tuple,当我们希望将一些数据组合成单一对象,但又不想麻烦原创 2014-06-27 10:10:38 · 445 阅读 · 0 评论 -
用于大型程序的工具
都是非常好的东西,非大型程序用了也很好啊原创 2014-06-27 13:22:00 · 473 阅读 · 0 评论 -
(十九)特殊工具与技术
new string("a value");第一步,new原创 2014-06-27 16:43:47 · 519 阅读 · 0 评论 -
(二)基本内置类型
char类型是无符号还是有符号由编译器决定,所以应该明确指定类型为 signed char 或 unsigned charfloat和double计算代价相差无几,有些时候double比float还快,所以应该优先使用double表达式中既有带符号类型又有无符号类型时,带符号类型会自动转换成无符号类型,有可能出现不期望值,所以应该尽量使用带符号类型原创 2014-02-18 17:49:28 · 602 阅读 · 0 评论 -
(三)字符串、向量、数组
直接初始化和拷贝初始化string s1(10,'c');string s2 = string(10,'c');//会影响性能!?s1.size();//返回对象中字符的个数,类型为string::size_type,是无符号类型,不要与有符号类型混用原创 2014-02-20 18:45:59 · 573 阅读 · 0 评论 -
(十五)面向对象程序设计
显示改写虚函数,override动态绑定:当使用基类的引用(或指针)调用一个虚函数时将发生动态绑定.析构函数应该被定义成虚析构函数,当遇到一个类A的指针,如果是虚析构函数,那么会调用具体类的析构函数(并逐层向上调用析构函数),否则会调用类A的析构函数,可能会造成释放不正确.析构函数都会调用上层基类的析构函数.其实虚函数造增加了耦合,并非是一个好的决策,应该尽量的设计成不需要虚函数,每个原创 2014-06-26 16:24:24 · 461 阅读 · 0 评论 -
(十二)动态内存与智能指针
shared_ptr p;shared_ptr p = make_shared(42);shared_ptr p2(new int(42));//不推荐,为了避免智能指针与普通指针的混用,所以最后使用make_shared,这样在内存分配之后立刻与智能指针绑定到一起.原创 2014-06-24 15:29:29 · 575 阅读 · 0 评论 -
(四)表达式
sizeof( type)sizeof exprsizeof与decltype一样,不会实际求运算对象的值,而是在编译器求出结果,所以不会实际运行代码,即使访问一个空指针也能得到对应的大小 sizeof( *(int*)0 );可以使用作用域来获得类成员的大小 sizeof SomeClass::Age;static_cast :普通类型转换,进行类型检查,要求转换原创 2014-02-23 21:02:19 · 432 阅读 · 0 评论 -
(五)语句
范围for 使用的是一个序列,能返回迭代器的begin和end成员.在范围for中预存了end()的值,所以不应该修改序列的大小.异常,throw 中表达式的类型就是抛出的一场类型,如果找到相应的catch则执行,完成后跳转到最后一个catch之后的语句继续执行(如果未能处理,如何继续向上层抛出传递?重新抛异常?)异常流程,当有异常抛出时,在当前函数寻找异常处理程序 catch原创 2014-02-24 11:07:27 · 409 阅读 · 0 评论 -
(六)函数
需要注意求值顺序在很多时候是不确定的我们把只存在于块执行期间的对象称为自动对象,当块执行结束后,自动对象销毁,值不在可靠.如果一个函数永远也不会被用到,那么可以只声明但没有定义.形参使用指针还是引用?都有可能为空,监测方案.建议使用引用代替指针?考虑!尽量使用常量引用作为参数,这样const对象,字面值都可以传进来.如果所有的实参类型都相同,可以传递一个名为initialize原创 2014-02-28 00:55:23 · 377 阅读 · 0 评论 -
C++Primer(第五版)学习笔记
为了再一次提高程序设计的综合能力,为了写出更简洁,健壮,优美的代码,决定好好吃透这本书,并结合实际应用总结高效,经典的写法.原创 2014-02-15 22:49:21 · 654 阅读 · 0 评论 -
(八)IO库
IO流机制可以具有统一的通用性,忽略具体设备类型对象外界之间的差异,相比函数的优势是可以看成是无名的函数,对未知个参数执行一个函数调用,不如分别对每个参数执行调用.IO对象无法拷贝或赋值,所以一般以引用的方式传递和返回流,因为读写IO对象会改变其状态,所以一般不会设置const流,当流失败,会返回error-code,而非抛出异常.刷新缓冲区,endl,flush,endl,unitbuf原创 2014-02-28 12:50:01 · 424 阅读 · 0 评论 -
(十)泛型算法
可调用对象:函数,函数指针,重载了调用运算符的类(那不是初始化?),lambda表达式(简易函数,或简易类).lambda表达式,作用为简易函数,通常为内联,并且可以定义在函数内部,可以没有名字.但需要包含基本的返回类型,参数列表,函数体.[捕获列表](参数列表) -> 尾置返回类型 { 函数体 }lambda 要求返回类型使用 尾置返回类型捕获列表是lambda所在函数中定义原创 2014-03-01 10:35:28 · 493 阅读 · 0 评论 -
(九)顺序容器
vector,可变大小数组,支持快速随机访问,但在尾部之外位置插入删除元素很慢deque,同vector,但是支持头部添加删除元素,在中间添加删除元素还是慢list,双向链表,任意位置添加删除元素都很快,但是只可以遍历访问元素,不支持快速随机访问forward_list,单项链表array,固定大小数组,同数组string,同vector,但是专门用来存储字符,并提供一些字符处原创 2014-02-28 13:12:42 · 492 阅读 · 0 评论 -
(十一)关联容器
map:关键字-值(key-value)对,字典set:关键字的集合,可以高效的查询一个关键字是否在这个集合中.允许重复关键字的容器名字中包含 multi(即一个关键字有多个值),用哈希函数组织的无需容器以unordered开头map word_count;++word_count["SomeKey"];//如果word_count中没有SomeKey,则下标运算会自动创建一个新的原创 2014-03-01 19:43:00 · 496 阅读 · 0 评论 -
(七)类
类的有点是讲相关联的数据放到了一起,并且提供了相应的操作方法,可以方便使用和管理.但凡有数据流入类,那么就要对数据进行合法有效性检查,不符合则抛出异常,在类内部,因为已经确认数据的有效性,应该检查函数参数的有效性,使用assert应该使用常量成员函数,来提高可用性.无论何时只要类的对象被创建,就会执行构造函数析构函数不被执行的情况,线程非自然退出导致栈未被清理,相应的析构函数不会被原创 2014-02-28 01:13:17 · 504 阅读 · 0 评论