
C++11
JiBeon
这个作者很懒,什么都没留下…
展开
-
移动语义和右值引用(C++11)
右值引用 左值:可以取地址、有名字的 右值:不能取地址、没名字的 传统的C++引用称为左值引用,使得标志符关联到左值。 C++11新增了右值引用,使用**&&表示。 引入右值引用的主要目的之一是实现移动语义**。 移动语义 在复制对象时,实现对象的移动而非拷贝。 通过移动构造函数、移动赋值运算符实现:函数的参数为右值引用,函数内部并非深度复制,而是夺取所有权。在将所有权转移给新对...原创 2019-06-16 17:31:35 · 116 阅读 · 0 评论 -
委托构造函数(C++11)
在一个构造函数的定义中,以成员初始化列表的方式使用另一个构造函数,这被称为委托。 可以避免重复编写多个重复构造函数中相同的代码,让编码工作更简单、更可靠。 class Notes{ int k; double x; string st; public: Notes(); Notes(int); Notes(int, double); Notes(int, double, string...原创 2019-06-16 17:01:54 · 273 阅读 · 0 评论 -
Lambda函数(C++11)
基本概念 用于创建匿名函数,lambda函数都是内联函数。 bool f3(int x) { return x % 3 == 0; } [] (int x) {return x % 3 == 0; } 使用[]代替了函数名;没有声明返回类型。 仅当lambda表达式完全由一条返回语句组成时,自动类型推断才管用;否则,需要使用返回类型后置语法声明返回类型: [] (double x) -> ...原创 2019-06-16 16:42:42 · 433 阅读 · 0 评论 -
可变参数模板(C++11)
定义 可变参数模板可以创建参数数量可变的模板函数和模板类。 模板参数包、函数参数包 参数包的定义 C++11中,可使用一个用省略号表示的元运算符来声明模板参数包。 template<tpyename...Args> //Args是模板参数包 void show_list(Args...args> //args是函数参数包 展开参数包 将省略号放在参数参数包名的右...原创 2019-06-16 15:40:36 · 204 阅读 · 0 评论 -
包装器function(C++11)
它从调用特征标1的角度定义了一个对象,可用于包装调用特征标相同的函数指针、函数对象或lambda表达式。 使得只生成调用特征标相同的实例一次,而调用多次的方式,缩小可执行代码的规模。原创 2019-06-16 14:59:39 · 287 阅读 · 0 评论