c++ - 为什么 push_back 有两个左值和右值重载?

标签 c++ c++11 move-semantics

为什么一个类/函数会有两个重载,一个用于左值,一个用于右值?

例如,来自 this视频,它说我们有两个重载 vector<T>::push_back

void push_back( const T& value );
void push_back( T&& value );

为什么我们不能只有一个值重载,

void push_back( T value );

如果它是一个左值,值将被复制,如果它是一个右值,值将被 move 。这不是标准的工作方式和保证方式吗?

最佳答案

根据您的按值提议,技术上会有复制+ move 或 move + move ,而对于其他两个重载,只有一个拷贝或一个 move 。

关于c++ - 为什么 push_back 有两个左值和右值重载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14534999/

相关文章:

c++ - CLion GNU STL 渲染器

没有上限或下限的 C++ 舍入数

c++ - 关于 shared_ptr 引用计数 block

c++ - 从 ‘std::wstring {aka std::basic_string<wchar_t>}’ 到非标量类型 ‘UString {aka std::basic_string<char>}’ 的转换

c++ - 如何在非规则感兴趣区域内选择随机均匀样本?

c++ - 我是否正确地将局部空间转换为世界空间坐标?

C++11 静态局部变量和线程

rust - 为什么entry需要key的所有权?

c++ - *this 的 std::move 和稍后对类方法和字段的访问

c++ - move 语义无意中被封装指针的类中的复制构造函数取代