摘要:
move语义 0、课前秀 + 这个概念不是很懂,但看cppreference里分为了两种:移动构造,移动赋值 + "move constructors" + "move assignment" + 移动语义是通过右值来匹配临时的, 普通的左值能否借助移动语义来优化性能 。 + 这是 "std::mo 阅读全文
摘要:
10右值引用 0、课前秀 + 右值引用(R value reference),标记为 ,是C++11增加的新的类型。 + 左值 :表达式结束后依然存在的持久对象 + 右值 :表达式结束时就不再存在的临时对象。 + 便捷的区分方法 :看能不能对表达式取地址。 所有的具名变量或对象都是左值 。 + 字面 阅读全文
摘要:
"tuple元组" 0、课前秀 + 又是我知识的盲区。 + tuple元组 是一个固定大小的不同类型值的集合,是泛化的std::pair。 + 也可以把tuple元组当作一个通用的结构体来用,不需要创建结构体又获取结构体的特征,在某些情况下可以取代结构体。 + 1、简单的一面 + 构造一个tuple 阅读全文
摘要:
std::funcation和std::bind绑定器 0、课前秀 + 这次来到了我知识盲区,我也不知道要引入这个,只是在看lambda表达式时看到的关键字,于是再回来看这部分知识。 + 看功能: 还能方便地实现延迟求值 。 虽然是啥,目前还有点懵 。 1、可调用对象(Callable Object 阅读全文
摘要:
"lambda表达式" 0、课前秀 + 应该在其它语言中听过lambda表达式这个词,来自数学概念 λ演算 ,本质是个 匿名函数 。 1、lambda表达式的概念和基本用法 + 语法形式: + capture:捕获列表 + params:参数 + opt:函数选项 这个没懂呢 lionel + re 阅读全文
摘要:
06:for循环 0、课前秀 + C++08/98中,不同的容器和数组,遍历的方法不尽相同,写法不统一,也不够简洁。 1、for循环的新用法 + 原先:遍历一个容器的for语句 + 原先: for_each算法 的用法: + C++11基于范围的for循环(The range based for s 阅读全文
摘要:
"列表初始化(list initalization)" 0、课前秀 + C++98/03对于不同类型(数组,结构体,类)的初始化,有不同的方法 1、统一的初始化 + //C++98/03不具备,C++11可以直接在变量名后面跟上初始化列表 + //虽然用了=,但仍然是列表初始化 + 注意: 在初始化 阅读全文
摘要:
"type alias(类型别名)" 0、课前秀 + 是C++98/03熟悉的类型别名, 局限性在于无法重定义一个模板 。 1、using语法通过赋值来定义别名 + 重定义unsigned int( using的别法语法覆盖了typedef的全部功能 ) + ReadMe + 20200422第1版 阅读全文
摘要:
auto和decltype的结合 0、课前秀 + 解决了sum()的类型问题, 但t1和t2并没有声明 ,为了解决这个问题,引入了 跟踪返回类型(trailing return type) 。 1、跟踪返回类型的引入 + 原先只用decltype的写法 + 现在:auto和decltype的写法 2 阅读全文
摘要:
decltype 0、课前秀 + 获取表达式的“声明类型”(Declared Type),所以命名为 + 思考: typeid与decltype的异同 + 用于返回指针或引用所指对象的实际类型。 1、获知表达式的类型 + 在编译时推导出一个表达式的类型 ,参考 + 理解以下代码 2、decltype 阅读全文