Modern C++
青石玄霄
吾生也有涯,而知也无涯
展开
-
c++ 类型推导
函数模板大致如下:template<typename T>void f(ParamType param);调用的时候 f(expr);在编译期,编译器会通过expr来推导T的类型和ParamType的类型,这两个类型不一定是一样的。模板型别推导分三种情况,template<typename T>void f(T& param); /...原创 2018-09-07 22:26:32 · 673 阅读 · 0 评论 -
std::function
std::function是c++11标准库中的一个模板,是可调用对象的包装器。可调用对象有如下几种定义:函数指针,类成员指针 具有operator() 成员函数的类对象(仿函数) 可被转换成为函数指针的类对象如果你需要创建一个std::function对象就必须指定想要指涉的函数的类型(返回值和参数表)举个栗子,声明一个名为func的std::function对象,它可以指涉到任...原创 2018-09-08 23:30:59 · 1438 阅读 · 0 评论 -
auto
modern c++ 新的关键字auto类型推导,先说好处。int x; 这个语句有潜在的未初始化风险。auto所修饰的变量必须被初始化,当我们使用auto时,一系列由未初始化的变量带来的问题就ヾ(ToT)Bye~Bye~了。另一个作用就是将啰嗦的变量声明简化,有人会说类型不直观,要直观首先保证你的代码在使用显式声明的前提下更清晰,可维护性更高,并且没有写错。比如std...原创 2018-09-09 21:34:51 · 285 阅读 · 0 评论 -
Effective Modern C++导读笔记
1、关于甄别表达式是左值还是右值,就是看能不能对表达式取地址,如果能,则为左值,否则为右值。2、右值的副本通常由移动构造函数创建,而左值的副本通常由复制构造函数创建。3、函数形参都是左值,实参可能是左值,也可能是右值。4、经由lambda表达式创建的函数对象称为闭包。5、声明的作用是引入名字和类型,而不给出细节,如存储位置或具体实现。6、定义则会给出存储位置和具体实现的细节。...原创 2018-09-06 23:08:06 · 201 阅读 · 0 评论