繁体   English   中英

为什么push_back对左值和右值有两个重载?

[英]Why does push_back have two overloads for lvalues and rvalues?

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

例如,从这个视频中,它说我们有两个vector<T>::push_back重载

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

为什么我们不能只按值重载一次,

void push_back( T value );

如果它是左值,则将复制值,如果它是右值,则将移动值。 这不是标准的工作方式和保证吗?

使用您的按价值命题,技术上会有复制+移动或移动+移动,而其他两个重载则有一个副本或一个移动。

除了其他人提到的点之外,还需要更改旧界面。 而且有时候这是不可接受的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM