【发布时间】:2020-11-25 16:49:06
【问题描述】:
#include <iostream>
#include <vector>
using namespace std;
int main(void){
vector<int> a;
a.push_back(3);
vector<int> b = move(a);
cout<<"b: "<<b.data()<<endl;
cout<<"a: "<<a.data()<<endl;
return 0;
}
输出(c++98):
b: 0x7f9a82405730
a: 0x7f9a82405720
输出(c++11):
b: 0x7f9a82405730
a: 0x0
我正在使用 Apple clang 11.0.3。
第一个输出没有使用编译器标志。
-std=c++11 第二个输出的标志。
我知道 move() 在 c++11(及更高版本)中的作用。 但正如我所见,在 c++98 中使用 move() 对传递的对象没有任何作用,只会发生深拷贝。
那为什么c++98中会有move()??
【问题讨论】:
-
评论不用于扩展讨论;这个对话是moved to chat。