我有一个看起来像这样的函数,它通过 movesemantics 返回一个不可复制的类:
MyClass&& MyFunction() {
MyClass myClass;
do some stuff;
return std::move(myClass);
}
然后它被访问
main() {
MyClass myClass = MyFunction();
}
该类利用 boost::noncopyable
来防止复制。它有构造函数、 move 构造函数和 move 赋值。
我的问题是,析构函数在 move 构造函数之前被调用。我做错了什么?
最佳答案
您正在返回对局部变量的引用。它是左值引用还是右值引用并不重要。
你可能应该这样做
MyClass MyFunction() {
MyClass myClass;
do some stuff;
return myClass;
}
并让编译器找出如何复制或 move 结果。
关于c++ - 在 move 构造函数之前调用析构函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11315593/