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


▶书的 固有坏处

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

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

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

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

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

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

▶区分不同性质的内容

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

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

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

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

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

内容框架、疑问点

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

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

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

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

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


▶《Cpp Primer》

【1~6章:小白Startup】

    变量和基本类型,string/vector/array,  表达式、语句、函数

【IO库 、STL】

    8章讲IO库;

    9,10,11章讲STL: (顺序/管理容器+Iterator、算法)

【类 + 动态内存 + 模板】

    第7章讲了类,13章拷贝控制,14章运算符重载与类型转换,

    16章讲模板;

    12章讲动态内存,直接讲智能指针而非raw pointer.

【OO设计】

    15章导入OO设计(基类-派生类);

    18章讲Exception机制、namespace包机制、多重继承/虚继承(Interface)

【其他】

    17章讲标准库中的一些冷门设施,19章讲一些黑技巧。

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


常用容器的常用操作(使用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语义的适配;

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

《C++ Primer》学习总结;兼论如何使用'书'这种帮助性资料的更多相关文章

  1. Go:学习笔记兼吐槽(3)

    Go:学习笔记兼吐槽(1) Go:学习笔记兼吐槽(2) Go:学习笔记兼吐槽(3) 数组 Golang 中,数组是值类型. 数组的声明 var arr [10]int 数组的初始化 var arr1  ...

  2. Go:学习笔记兼吐槽(2)

    Go:学习笔记兼吐槽(1) Go:学习笔记兼吐槽(2) Go:学习笔记兼吐槽(3) 基本数据类型和string之间的转换 (1) 基本类型转string 使用 fmt.Sprintf(“%参数”, 表 ...

  3. Go:学习笔记兼吐槽(1)

      Go:学习笔记兼吐槽(1) Go:学习笔记兼吐槽(2) Go:学习笔记兼吐槽(3) 自动添加分号 在很多其他的编程语言中,每一行代码的结尾都必须有分号(假设一行中只有一句代码),Golang 的开 ...

  4. C++ Primer学习笔记(三) C++中函数是一种类型!!!

    C++中函数是一种类型!C++中函数是一种类型!C++中函数是一种类型! 函数名就是变量!函数名就是变量!函数名就是变量! (---20160618最新消息,函数名不是变量名...囧) (---201 ...

  5. C++ Primer学习笔记(二)

    题外话:一工作起来就没有大段的时间学习了,如何充分利用碎片时间是个好问题. 接  C++ Primer学习笔记(一)   27.与 vector 类型相比,数组的显著缺陷在于:数组的长度是固定的,无法 ...

  6. Directx11学习笔记【八】 龙书D3DApp的实现

    原文:Directx11学习笔记[八] 龙书D3DApp的实现 directx11龙书中的初始化程序D3DApp跟我们上次写的初始化程序大体一致,只是包含了计时器的内容,而且使用了深度模板缓冲. D3 ...

  7. 转载:看c++ primer 学习心得

    学习C++ Primer时遇到的问题及解释 chenm91 感觉: l          啰嗦有时会掩盖主题:这本书确实有些啰嗦,比如在讲函数重载的时候,讲了太长一大段(有两节是打了*号的,看还是不看 ...

  8. C++ Primer学习笔记(一)

    始终对C++念念不忘,看过 一个32岁入门的70后程序员给我的启示  之后,心情激荡,更是一发不可收拾. 认真地说,我不是一个执着的人,见异思迁,好读书而不求甚解,兼之情绪化(~~ 某些方面),于是怒 ...

  9. C++ primer学习记录(个人猜想未测试版本)

    学习版本:第五版. 本博文主要记录个人曾经并不知晓知识细节. 因为linux下的编译环境还未进行学习.所以实际代码测试将在今后完成. 红色:需确认. 蓝色:重点. 1)const对象设定为仅在文件内有 ...

随机推荐

  1. 为DS5添加新的gcc工具链

    环境: 步骤: 1.下载mingw32版本的工具链 下面有两个下载工具链的网站: ARM官网的: https://developer.arm.com/tools-and-software/open-s ...

  2. JfreeChart 乱码问题处理

    在前面之间加上下面这段代码即可. //创建主题样式 StandardChartTheme standardChartTheme=new StandardChartTheme("CN" ...

  3. Codeforces Good Bye 2016 E. New Year and Old Subsequence

    传送门 题意: 给出一个长度为\(n\)的串,现在有\(q\)个询问,每个询问是一个区间\([l,r]\),要回答在区间\([l,r]\)中,最少需要删多少个数,满足区间中包含\(2017\)的子序列 ...

  4. adb 命令之push pull

    C:\Users\ceshi>adb pull /storage/emulated/legacy/00001.vcf D:/E:\eclipse\Demo1>adb push E:\ecl ...

  5. pycharm运行过程中pycharm控制台和python控制台之间的切换

    有时候在调试(debug)python代码的时候,希望像matlab那样输入某一个变量以查看其值,这是需要把pycharm的console切换到python的console,以输入变量查看其值,点击那 ...

  6. A9G开发

    巨坑 不支持联通 发短信 上电,准备好后使用 结束标志 取消换行  以16进制发  0x1a 实际测试 中间可以有很多行内容 短信内容结束换行 最后必须以 16进制 发送 0x1a  带和不带换行都可 ...

  7. [Algorithm] 118. Pascal's Triangle

    Given a non-negative integer numRows, generate the first numRows of Pascal's triangle. In Pascal's t ...

  8. 模拟赛T2 线段树优化建图+tarjan+拓扑排序

    然而这只是 70pts 的部分分,考场上没想到满分怎么做(现在也不会) code: #include <cstdio> #include <string> #include & ...

  9. C语言中宏的相关知识

    2019/04/27 16:02 1.宏的定义:宏定义就是预处理命令的一种,它允许用一个标识符来表示一个字符串.格式如下: #define name(宏名) stuff(字符串) 本质就是使用宏名去替 ...

  10. CDN惹的祸:记一次使用OSS设置跨域资源共享(CORS)不生效的问题

    原文: https://www.lastupdate.net/4669.html 昨天H5组的开发反馈了一个问题,说浏览器收不到跨域的配置,提示:Failed to load https://nnmj ...