《C++ Primer》学习总结;兼论如何使用'书'这种帮助性资料
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》学习总结;兼论如何使用'书'这种帮助性资料的更多相关文章
- Go:学习笔记兼吐槽(3)
Go:学习笔记兼吐槽(1) Go:学习笔记兼吐槽(2) Go:学习笔记兼吐槽(3) 数组 Golang 中,数组是值类型. 数组的声明 var arr [10]int 数组的初始化 var arr1 ...
- Go:学习笔记兼吐槽(2)
Go:学习笔记兼吐槽(1) Go:学习笔记兼吐槽(2) Go:学习笔记兼吐槽(3) 基本数据类型和string之间的转换 (1) 基本类型转string 使用 fmt.Sprintf(“%参数”, 表 ...
- Go:学习笔记兼吐槽(1)
Go:学习笔记兼吐槽(1) Go:学习笔记兼吐槽(2) Go:学习笔记兼吐槽(3) 自动添加分号 在很多其他的编程语言中,每一行代码的结尾都必须有分号(假设一行中只有一句代码),Golang 的开 ...
- C++ Primer学习笔记(三) C++中函数是一种类型!!!
C++中函数是一种类型!C++中函数是一种类型!C++中函数是一种类型! 函数名就是变量!函数名就是变量!函数名就是变量! (---20160618最新消息,函数名不是变量名...囧) (---201 ...
- C++ Primer学习笔记(二)
题外话:一工作起来就没有大段的时间学习了,如何充分利用碎片时间是个好问题. 接 C++ Primer学习笔记(一) 27.与 vector 类型相比,数组的显著缺陷在于:数组的长度是固定的,无法 ...
- Directx11学习笔记【八】 龙书D3DApp的实现
原文:Directx11学习笔记[八] 龙书D3DApp的实现 directx11龙书中的初始化程序D3DApp跟我们上次写的初始化程序大体一致,只是包含了计时器的内容,而且使用了深度模板缓冲. D3 ...
- 转载:看c++ primer 学习心得
学习C++ Primer时遇到的问题及解释 chenm91 感觉: l 啰嗦有时会掩盖主题:这本书确实有些啰嗦,比如在讲函数重载的时候,讲了太长一大段(有两节是打了*号的,看还是不看 ...
- C++ Primer学习笔记(一)
始终对C++念念不忘,看过 一个32岁入门的70后程序员给我的启示 之后,心情激荡,更是一发不可收拾. 认真地说,我不是一个执着的人,见异思迁,好读书而不求甚解,兼之情绪化(~~ 某些方面),于是怒 ...
- C++ primer学习记录(个人猜想未测试版本)
学习版本:第五版. 本博文主要记录个人曾经并不知晓知识细节. 因为linux下的编译环境还未进行学习.所以实际代码测试将在今后完成. 红色:需确认. 蓝色:重点. 1)const对象设定为仅在文件内有 ...
随机推荐
- Nginx编译安装脚本
Nginx是高性能的web服务器和反向代理服务器,在互联网公司中被广泛使用.以下是Nginx在centos7系统下的一键编译安装脚本,仅供参考,具体编译参数选项请结合实际生产环境需求进行选择,脚本 ...
- 【servlet】Servlet的API和生命周期]
创建时间:6.15 一.Servlet的API(生命周期) (1)Servlet接口中的方法 1)init(ServletConfig config) 何时执行:servlet对象创建的时候执行 Se ...
- IE6兼容性bug汇总
1.终极方法:条件注释 <!--[if lte IE 6]> 这段文字仅显示在 IE6及IE6以下版本. <![endif]--> <!--[if gte IE 6]&g ...
- mybatis框架的分页功能
需求说明:为用户管理之查询用户列表功能增加分页实现 列表结果按照创建时间降序排列 /** * 需求说明:为用户管理之查询用户列表功能增加分页实现 列表结果按照创建时间降序排列 * @para ...
- Django API 自定义状态码
class BaseResponse(object): def __init__(self): self.code = 1000 self.data = None self.error = None ...
- 如何使用docker部署springcloud???
如何使用docker部署springcloud??? springcloud 必须基于 springboot 项目来开发, 这里讲解springboot项目的部署, springcloud项目也是同理 ...
- three.js 离线API
- 请指出document load和document ready的区别
document load文档的所有内容都加载完成 document ready文档的DOM加载完成
- SqlServer 快速查看表结构
--快速查看表结构(比较全面的) THEN obj.name ELSE '' END AS 表名, col.colorder AS 序号 , col.name AS 列名 , ISNULL(ep.[v ...
- 招聘.net高级工程师
1. 本科及以上学历(必须): 2. 精通.net框架和常见web框架,精通常见设计模式并熟练应用. 3. 扎实的技术功底,有良好的数据结构和算法基础,深入理解面向对象编程思想, 熟悉面向对象的基本设 ...