《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对象设定为仅在文件内有 ...
随机推荐
- 【Servlet】Servlet的配置
创建时间:6.15 Servlet的配置 1. 基本配置 其中url-pattern的配置方式: 1)完全匹配 访问的资源与配置的资源完全相同才能访问到 2)目录匹配 格式:/虚拟的目录../* ...
- xadmin引入django-rest-framework
一.安装: pip install djangorestframework 安装djangorestframework库 https://github.com/encode/django-rest-f ...
- 性能测试基础---jmeter参数化、关联、事物、检查的等
·Jmeter脚本增强·性能测试的脚本增强技术:参数化.关联.事务.检查点.思考时间和集合点. ·参数化:在Jmeter中,实现参数化的方式很多.本质上来说,参数化的实现方式有两种:·文件方式:一般建 ...
- tf.Variable()、tf.get_variable()和tf.placeholder()
1.tf.Variable() tf.Variable(initializer,name) 功能:tf.Variable()创建变量时,name属性值允许重复,检查到相同名字的变量时,由自动别名机制创 ...
- 第12节-BLE协议HCI层的数据格式
学习资料: 1. 蓝牙协议core_v5.0.pdf <Vol 2: Core System Package [BR/EDR Controller volume]>的“Part E: Ho ...
- Linux应急响应
1.识别现象 top / ps -aux 监控与目标IP通信的进程 while true; do netstat -antp | grep [ip]; done 若恶意IP变化,恶意域名不变,使用ho ...
- destoon搜索伪静态失败解决办法
今天给一个朋友调试DT6.0内核的站点,搜索中文出现http 403 forbidden,找了半天,很纳闷,最后一个一个查看源代码总算找到,在此分享给大家! 解决的方法: 1.找到include/sa ...
- php提示Undefined index的解决方法
我们在做php开发时有时可能会提示Notice: Undefined index: *** on line 249,出现上面这些是 PHP 的提示而非报错,PHP 本身不需要事先声明变量即可直接使用, ...
- JAVA web 框架集合
“框架”犹如滔滔江水连绵不绝, 知道有它就好,先掌握自己工作和主流的框架: 在研究好用和新框架. 主流框架教程分享在Java帮帮-免费资源网 其他教程需要时间制作,会陆续分享!!! 152款框架,你还 ...
- 获取DOM元素的方式有哪些
document.getElementById();//id名 document.getElementsByTagName();//标签名 document.getElementsByClassNam ...