【发布时间】:2018-06-26 10:02:47
【问题描述】:
我已经阅读了很多关于移动构造函数的文章(甚至在堆栈上),但我没有找到任何关于它如何工作的确切解释(如何将指针传输到临时对象并保存如果这个临时变量及其地址将是遇到时销毁")")。
这是一个简单的例子
#include <iostream>
#include <vector>
using namespace std;
class boVector {
private:
int size;
public:
boVector() {};
boVector(const boVector& rhs) { cout << "copy Ctor." << endl; }
boVector(boVector&& rhs) { cout << "move Ctor." << endl; }
};
void foo(boVector v) {}
boVector createBoVector() { return boVector(); }
int main()
{
//copy
boVector reausable = createBoVector();
foo(reausable);
//move
foo(std::move(createBoVector()));
return 0;
}
都说移动Ctor是一个浅拷贝拷贝或者只是一个指针赋值。但是我怎样才能用一个指向临时对象的指针来启动我的对象(当这个对象将被销毁时,我的对象将指向一个未知的地址,从我的角度来看这是无效的)。
用他遇到“)”后将不再存在的指针地址来初始化一个变量是不对的。
如果有人可以解释一下这个临时变量在内存中的外观,以及如何将临时对象的地址分配给我当前的地址,并且这个操作是有效的。
【问题讨论】:
-
您的代码中没有任何指针。不清楚你在问什么。
标签: c++ c++11 constructor move-semantics move-constructor