Skip to content

Effective Modern C++

C++11 移动构造(move constructor)函数概述

C++11中容器通过移动构造函数转移所有权给另一个容器变量 C++11 为许多标准库容器引入了移动构造函数,这意味着我们可以高效地将一个容器的所有权转移到另一个容器,而无需进行深度拷贝。以下是一些使用移动构造函数转移容器所有权的例子: std::vector: 1#include <vector> 2#include <iostream> 3 4int main() { 5 std::vector<int> vec1 = {1, 2, 3, 4, 5}; 6 7 // 使用移动构造函 Read more

effective_modern_c++ Item24_P156_1

什么是万能引用 “万能引用”是 Scott Meyers 在他的书《Effective Modern C++》中引入的术语,用于描述某些模板参数的行为,这种模板参数可以绑定到几乎任何类型的参数,无论是 lvalue 还是 rvalue。正式的名称是"转发引用"(forwarding reference)。 一个万能引用的定义形式如下: 1template<typename T> Read more

effective_modern_c++ Item24_P158_1

1template<typename T> 2void f(T&& param); // param is a universal reference 3 4// lvalue passed to f; param's type is 5// Widget& (i.e., an lvalue reference) 6Widget w; 7f(w); 8 9// rvalue passed to f; param's type is 10// Widget&& (i.e., an rvalue reference) 11f(std::move(w)); 这里涉及到 C++11 引入的右值引用和"完美转发"的概念,以及模板类型推导与引用折叠规则。 首先,当我们看到 T&& 的形式,并且 T 是一个模板参数,这通常被称为"通用引用"或"转发 Read more