Vik*_*ehr 4 c++ visual-studio-2010 move-semantics c++11
我有一个看起来像这样的函数,它通过movesmanmantics返回一个不可复制的类:
MyClass&& MyFunction() {
MyClass myClass;
do some stuff;
return std::move(myClass);
}
Run Code Online (Sandbox Code Playgroud)
然后由
main() {
MyClass myClass = MyFunction();
}
Run Code Online (Sandbox Code Playgroud)
该类boost::noncopyable用于防止复制。它具有构造函数,移动构造函数和移动分配。我的问题是,析构函数在move构造函数之前被调用。我做错了什么?
您正在返回对局部变量的引用。它是左值引用还是右值引用都没有关系。
你可能应该做
MyClass MyFunction() {
MyClass myClass;
do some stuff;
return myClass;
}
Run Code Online (Sandbox Code Playgroud)
并让编译器确定如何复制或移动结果。
| 归档时间: |
|
| 查看次数: |
538 次 |
| 最近记录: |