《C++ Primer (V4)》读书笔记
第2章 变量和基本类型
1.(P56)如果使用class关键字来定义类,那么定义在第一个访问标号前的任何成员都隐式指定为private;如果使用struct关键字,那么这些成员都是public。
第7章 函数
1.数组有两个特殊的性质,影响我们定义和使用作用在数组上的函数:一是不能复制数组(4.1.1节);二是使用数组名字时,数组名会自动转化为指向其第一个元素的指针。
2.当编译器检查数组形参关联的实参时,它只会检查实参是不是指针、指针的类型和数组元素的类型是否匹配,而不会检查数组的长度。
3.数组形参可声明为数组的引用。如果形参是数组的引用,编译器不会将数组实参转化为指针,而是传递数组的引用本身。在这种情况下,数组大小成为形参和实参类型的一部分。编译器检查数组实参的大小与形参的大小是否匹配。
void printValues(int (&arr)[]) {/*...*/}
int main() {
int i = , j[] = {,};
int k[] = {,,,,,,,,,};
printValues(&i); //error
printValues(j); //error
printValues(k); //ok:argument is an array of 10
}
第15章 面向对象编程
1.(P485)使用class保留字定义的派生类默认具有private继承,而使用struct保留字定义的类默认具有public继承。
2.(P484)为了使size在Derived中成为public,可以在Derived的public部分增加一个using声明。
3.(P485)尽管私有继承在使用class保留字时是默认情况,但这在实践中相对罕见。
4.(P486)友元关系不能继承。
5.(P488)引用转换不同于转换对象。①可以将派生类型的对象传递给希望接受基类引用的函数时,引用直接绑定到该对象,虽然看起来在传递对象,实际上实参是该对象的引用,对象本身未被复制,转换不会再任何方面改变派生类型对象,该对象仍然是派生类型对象。②将派生类对象传递给希望接受基类类型对象(而不是引用)的函数时,该派生类对象的基类部分被复制到形参。
6.(P491)派生类构造函数通过将基类包含在构造函数初始化列表中来间接初始化继承成员(不能直接初始化继承成员)。初始化列表不指定初始化的执行次序,首先初始化基类,然后根据声明初始化派生类的成员。
第16章 模版与泛型编程
1.(P530)如果是类型形参,我们就知道该形参表示未知类型,如果是非类型形参,我们就知道它是一个未知值。
2.(P530)与全局作用域中声明的对象,函数或类型同名的模版形参会屏蔽全局名字。
3.(P530)用作模版形参的名字不能在同一模版内部重用。
4.(P531)对于模版可以只声明而不定义,在同一模版的声明和定义中,模版形参的名字不必相同。
template <class T> T calc(const T&, const T&);
template <class U> U calc(const U&, const U&);
省略关键字或类型说明符是错误的:
template <class T, U> T calc(const T&, const U&); //error
5.(P352)在函数模版形参表中,关键字typename和class具有相同含义,可以互换使用,两个关键字都可以在同一模版形参表中使用。但是,关键字typename是作为标准C++的组成部分加入到C++中的,因此旧的程序更有可能只用关键字class。
6.(P532)在模版定义内部指定类型:通过在成员前加上关键字typename作为前缀,可以告诉编译器将成员当作类型。
template <class Parm, class U>
Parm fcn(Parm *array, U value) {
typename Parm::size_type *p;
...
}
这些声明给用来实例化fcn的类型增加了一个职责:那些类型必须具有名为size_type的成员,而且该成员是一个类型。
7.(P533)非类型形参:
template <class T, size_t N>
void array_init(T (parm&)[N]) {
for(size_t i = ; i != ; ++i)
parm[i] = ;
}
当调用array_init时,编译器从数组实参计算非类型形参的值:
int x[];
double y[];
array_init(x);
array_init(y);
8.(P534)泛型编程的两个重要原则:模版的形参是const引用;函数体中的测试只用<比较。
《C++ Primer (V4)》读书笔记的更多相关文章
- csapp读书笔记-并发编程
这是基础,理解不能有偏差 如果线程/进程的逻辑控制流在时间上重叠,那么就是并发的.我们可以将并发看成是一种os内核用来运行多个应用程序的实例,但是并发不仅在内核,在应用程序中的角色也很重要. 在应用级 ...
- CSAPP 读书笔记 - 2.31练习题
根据等式(2-14) 假如w = 4 数值范围在-8 ~ 7之间 2^w = 16 x = 5, y = 4的情况下面 x + y = 9 >=2 ^(w-1) 属于第一种情况 sum = x ...
- CSAPP读书笔记--第八章 异常控制流
第八章 异常控制流 2017-11-14 概述 控制转移序列叫做控制流.目前为止,我们学过两种改变控制流的方式: 1)跳转和分支: 2)调用和返回. 但是上面的方法只能控制程序本身,发生以下系统状态的 ...
- CSAPP 并发编程读书笔记
CSAPP 并发编程笔记 并发和并行 并发:Concurrency,只要时间上重叠就算并发,可以是单处理器交替处理 并行:Parallel,属于并发的一种特殊情况(真子集),多核/多 CPU 同时处理 ...
- 读书笔记汇总 - SQL必知必会(第4版)
本系列记录并分享学习SQL的过程,主要内容为SQL的基础概念及练习过程. 书目信息 中文名:<SQL必知必会(第4版)> 英文名:<Sams Teach Yourself SQL i ...
- 读书笔记--SQL必知必会18--视图
读书笔记--SQL必知必会18--视图 18.1 视图 视图是虚拟的表,只包含使用时动态检索数据的查询. 也就是说作为视图,它不包含任何列和数据,包含的是一个查询. 18.1.1 为什么使用视图 重用 ...
- 《C#本质论》读书笔记(18)多线程处理
.NET Framework 4.0 看(本质论第3版) .NET Framework 4.5 看(本质论第4版) .NET 4.0为多线程引入了两组新API:TPL(Task Parallel Li ...
- C#温故知新:《C#图解教程》读书笔记系列
一.此书到底何方神圣? 本书是广受赞誉C#图解教程的最新版本.作者在本书中创造了一种全新的可视化叙述方式,以图文并茂的形式.朴实简洁的文字,并辅之以大量表格和代码示例,全面.直观地阐述了C#语言的各种 ...
- C#刨根究底:《你必须知道的.NET》读书笔记系列
一.此书到底何方神圣? <你必须知道的.NET>来自于微软MVP—王涛(网名:AnyTao,博客园大牛之一,其博客地址为:http://anytao.cnblogs.com/)的最新技术心 ...
- Web高级征程:《大型网站技术架构》读书笔记系列
一.此书到底何方神圣? <大型网站技术架构:核心原理与案例分析>通过梳理大型网站技术发展历程,剖析大型网站技术架构模式,深入讲述大型互联网架构设计的核心原理,并通过一组典型网站技术架构设计 ...
随机推荐
- fb 发布桌面应用图标
1.以src文件夹为根目录,即图标放在src文件内 2.修改app.xml文件icon,按尺寸填入,如下图 同时可修改app应用的名字,接受中文,如下图红色涂鸦: 导出发行版的时候,注意打包内容有么有 ...
- 常用html设置:
省略 居中 1. 省略 ellipsis: text-overflow:ellipsis: 要求容器必须是固定的,要不然无法做省略. table的省略 table{ table_layout:fixe ...
- UI5-文档-4.4-XML Views
将所有UI放到index.html文件将很快导致一个混乱的设置,有相当多的工作在我们前面.我们先用sap.m.Text进行模块化.控件导入专用视图. SAPUI5支持多种视图类型(XML.HTML.J ...
- 【OpenPose-Windows】OpenPose+VS2015+Windows+CUDA8+cuDNN5.1 官方配置教程(转载)
[我的电脑配置] 操作系统:Windows 10 CUDA版本:cuda_8.0.61_win10 cuDNN版本:cudnn-8.0-windows10-x64-v5.1 GPU model:Nvi ...
- 使用robotium对android应用进行自动化测试
所需要的环境: 1.eclipse 2.android development tools(ADT) 3.software develoment kit(SDK) 4.JDK 5.robotium 1 ...
- hadoop 链接 mysql
数据在hadoop服务器上,需要导入mysql 可以直接在hadoop上操作 要知道 mysql的 账号 密码 host 步骤: 进入shell 输入: mysql -u 'name' -p'pas ...
- 4、注解反射生成SQL语句
.任务说明 ①有一张用户表,字段包括:用户ID.用户名.昵称.年龄.性别.所在城市.邮箱.手机号: ②使用java注解来对用户表的每个字段或字段的组合条件进行动态生成S ...
- pymongo CursorNotFound错误
部分报错如下: File "D:\anaconda\lib\site-packages\pymongo\cursor.py", line 1189, in next if len( ...
- poj3278-Catch That Cow 【bfs】
http://poj.org/problem?id=3278 Catch That Cow Time Limit: 2000MS Memory Limit: 65536K Total Submis ...
- React Native 首次加载白屏优化
RN首次加载都会有个白屏过程,一般都会有500ms+的白屏时间,原生页面开发同样的页面会能够快速显示而在RN页面中有个明显的等待过程,这个会影响用户体验. 1.使用过渡页面 简单处理可以在白屏过程中加 ...