Return 来自 class 的可移动成员变量
Return moveable member variable from class
class foo{
public:
bar steal_the_moveable_object();
private:
bar moveable_object;
};
main(){
foo f;
auto moved_object= f.steal_the_moveable_object();
}
如何实现 steal_the_movebale_object
将 moveable_object
移动到 moved_object
中?
您可以直接在 return 语句中直接移动成员:
class foo
{
public:
bar steal_the_moveable_object()
{
return std::move(moveable_object);
}
private:
bar moveable_object;
};
请注意,这可能不是一个好主意。考虑改用以下方法,以便该方法只能在 R 值上调用:
class foo
{
public:
bar steal_the_moveable_object() && // add '&&' here
{
return std::move(moveable_object);
}
private:
bar moveable_object;
};
int main()
{
foo f;
//auto x = f.steal_the_moveable_object(); // Compiler error
auto y = std::move(f).steal_the_moveable_object();
return 0;
}
class foo{
public:
bar steal_the_moveable_object();
private:
bar moveable_object;
};
main(){
foo f;
auto moved_object= f.steal_the_moveable_object();
}
如何实现 steal_the_movebale_object
将 moveable_object
移动到 moved_object
中?
您可以直接在 return 语句中直接移动成员:
class foo
{
public:
bar steal_the_moveable_object()
{
return std::move(moveable_object);
}
private:
bar moveable_object;
};
请注意,这可能不是一个好主意。考虑改用以下方法,以便该方法只能在 R 值上调用:
class foo
{
public:
bar steal_the_moveable_object() && // add '&&' here
{
return std::move(moveable_object);
}
private:
bar moveable_object;
};
int main()
{
foo f;
//auto x = f.steal_the_moveable_object(); // Compiler error
auto y = std::move(f).steal_the_moveable_object();
return 0;
}