因此,我找到了Matrix类的赋值运算符函数的以下代码示例:
Matrix<T>& Matrix<T>::operator=(Matrix&& M)
{
if (this != &M)
{
delete[] m_vec;
M.m_rows = 0;
M.m_cols = 0;
M.m_capacity = 0;
M.m_vec = nullptr;
}
return *this;
}
而且我对this != &M
在这里的含义感到很困惑。当您尝试获取右值引用的内存地址时会发生什么?这就是这段代码要做什么吗?
this != &M
到底做什么?它检查什么?this
的值...没有给出新值?抱歉,这很愚蠢。我是C ++的新手,我想学习右值引用的工作方式以及为什么在这种情况下使用它们。
谢谢!
这只是检查自我分配。如果要传递的对象的地址与this
相同,则不执行任何操作。