我的问题是,如果我们想移动一个对象,而在该对象内部,我们想移动的变量不是指针,我们应该如何释放临时值?
我应该把临时变量的内存分配给nullptr吗?(这是不可能的)
下面是代码以便更好地理解
class Foo
{
public:
...
Foo(Foo&& other) noexcept
{
m_Value = other.m_Value;
/*
The bottom line will not work, so what should I do instead of this line of code?
*/
&other.m_Value = nullptr;
}
private:
int m_Value;
};
1条答案
按热度按时间7y4bm7vi1#
不使用指针
因为
m_Value
不是指针,所以不需要将其设置为null,因为它只是一个int(i)。在这种情况下,一个变量只能保存整数),这里有一个例子:使用指针
即使您指定不想使用指针,但在必须传输大块数据时,了解指针始终是一个很好的特性。
例如,如果
m_Value
是一个包含大量数据的大类,那么传输指向它的变量比传输整个类更好。下面是一个示例,它使
foo
类能够将m_Value
变量设置为nullptr:正如您所看到的,除了代码更长之外,
foo
类现在充分利用了C的指针。如前所述,您编写的代码不起作用,因为
m_Value
不是指针,而只是一个int,它只能保存整数,而不能保存变量地址。使
m_Value
成为int* i。例如,一个指针包含一个指向整数的地址,将解决这个问题,你现在可以设置m_Value
为nullptr,但你必须遵循指针规则,如分配和删除指针,当你完成使用它们。如果你想了解更多,可以检查C指针上的W3 School tutorial。