《C++ Primer》读后感——兼论如何使用'书'这种帮助性资料

6.25~ 6.27,用了3天翻了一遍《C++ Primer》.


▶书的 固有坏处

一句话: 代码比 文字描述 好看多了。————> 直接看习题部分/ 看demo就行了

看文字在描述这个情景,还要自己脑子里想象出来这段话在说什么。经常不知道其中哪句话是个啥意思。而且看着看着就走神了。
——> 除非是对存疑的代码进行解说,否则用文字来导入场景,书看起来真的很没意思。

▇▇ 《cpp Primer》这个文字描述 看着让人犯困! 还是找找啥一章总结/读书笔记 性质的先来看看吧!

===========================================================================

▶辨别一份好的教材/教程

一本好的书,应当有 各章小结、并配有习题。

▶区分不同性质的内容

书中讲的那些东西可以细分为几种性质的内容:
首先,可以看做一个个独立的主题。比如shared_ptr这一块、构造函数这一块……

一个是导入性质的,讲给小白这是什么。给个示例、然后讲是什么,引入一些概念。
二个是讲使用时最常遇到的场景、需要注意的问题。这种比较有价值。
三个是进阶版本了,内容也是选取性的,讲一些更复杂的场景/ 更隐蔽的理解。

《cpp Primer》集中在一、二这两种内容。

===========================================================================

▶使用资料前,自己必须先准备好的工作

内容框架、疑问点

===========================================================================

▶▶▶:使用‘书’的正确姿势:【去寻求项目中产生的疑问的答案 】 式用书

(1) 自己是想了解那部分内容?具体的疑问列举一些?

 (2) 先看‘本章小结’ 这种性质的东西,对问题框架必须先清楚。

 (3) 少看描述情景的文字,太累。直接看demo+当成解说, 或练习的话:直接去做习题


▶《Cpp Primer》

常用容器的常用操作(使用Iterator)
容器上的常用算法

static_cast, const_cast,

lambda

shared_ptr, unique_ptr, weak_ptr, auto_ptr

动态数组、allocator

move语义

模板类、模板函数

“函数对象”(function object)

============================================================
使用:

①对象实例全部用shared_ptr放heap上
+②virtual继承
+③参数/返回值按引用传递
可完全实现Java的语义效果。
----------------------------------------------------
临时对象:
这行中产生这个对象,这行代码结束就析构这个对象(可能已被拷贝过)
----------------------------------------------------
引用变量:instance别名
对象别名(变量名)的作用域|生存周期就是 当前函数范围内,它又不能传进来/传出去,所以不用担心它。只关注指针就好了
----------------------------------------------------
参数为引用-其语义:
这个对象是调用方提供的,本就存在;
这个函数只是使用它;
这个函数不改变其生命周期(?一般情况下)
----------------------------------------------------
动态内存:
本来所有对象的生存周期都在其产生的方法栈上,方法调用结束这对象就没了(除非通过返回 拷贝出去)
现在放在公共的heap堆上,就可以让对象的生命周期跨越函数栈,为程序各处共享。
----------------------------------------------------
shared_ptr: 就是raw pointer的Wrapper。
指向同一个instance的shared_ptr都关联着同一个“instance的计数器”——记录有几个指针指向该instance


===========================================================
VS2015现在发现2个小问题:
1. vector<int> v{1,2,3}; 提示不能列表初始化。而这个语法肯定是对的(打开答案代码时不报错)
2. 该编译时就报错的地方不报错,build时才发现这是明显的语法错误。
  比如 cbegin,end等无参成员函数,调用时不写括号竟然不报错!Build时才说!
3. const T& 参数 我在函数体内修改了竟然没报错

==========================================================
几个还会时不时糊涂的地方:

const语义和Non-const语义的适配;

默认提供的类的 构造/ 拷贝/赋值/析构 的语义是什么样的,什么时候不能用,怎样重写

猜你喜欢

转载自www.cnblogs.com/nanlan2017/p/9235415.html