标签:左值lvaue 右值rvalue stdmove c++11
{ int tmp=a; a=a+1; return tmp; }a++是右值。
{ a=a+1; return &a; }显然++a的效率高。
#include<iostream> void print_lvalue(int& i)//左值 { std::cout << "Lvalue:" << i << std::endl; } void print_rvalue(int&& i)//右值 { std::cout << "Rvalue:" << i << std::endl; } int main() { int i = 0; print_lvalue(i); print_rvalue(1); //print_lvalue(1)会出错 //print_lvalue(const int& i)可以使用print_lvalue(1) return 0; }
#include<iostream> void print_value(int& i)//左值 { std::cout << "Lvalue:" << i << std::endl; } void print_value(int&& i)//右值 { std::cout << "Rvalue:" << i << std::endl; } int main() { int i = 10; print_value(i); print_value(std::move(i)); return 0; }
void swap(T& a, T& b) { T tmp = std::move(a); a = std::move(b); b = std::move(tmp); }避免了3次拷贝。
标签:左值lvaue 右值rvalue stdmove c++11
原文地址:http://blog.csdn.net/kangroger/article/details/40072379