我要提问
ARTICLE DETAIL

资讯详情

前沿编程新知与开发实战干货的深度解读。

C++ 右值引用意义

C++ 右值引用意义 void reference(int v) { std::cout 左值引用 std::endl; } void reference(int v) { std::cout 右值引用 std::endl; int newV v; //v被转移到newV,v此后无法使用 }int fn(){...} //返回类型为左值引用 int fn(){...} //返回值为右值引用左值引用是用于常规对象的引用和修改右值引用是为了优化资源管理特别是临时对象的生命周期终结时能将其拥有的资源高效地转移给新的所有者。常见用法1std::vector::emplace_back(T val)常见用法2class A;A oldVal;A newVal std::move(oldVal);常见用法3class A {public:A(int oldV) : v(oldV) {}A(const A b){...} //copy constructA(A b){...} //move constructint v;}int v 0;int oldV 0;A oldVal(oldV);A newVal(oldVal);常见用法4templatetypename... Argsvoid h(Args... args){reference(std::forwardArgs(args)...);}常见用法5class A final { public: int a 20; }; A func() { A a; return std::move(a); }auto delayA func(); // 延长临时对象生命周期 delayA.a - 20; printf(delayA.a %d\n, delayA.a); // 输出 delayA.a 0常见用法6std::string a .....;std::string_view refRightA a;创作不易小小的支持一下吧
返回列表