我必须首先承认我对C ++的了解很少,所以如果问题看起来有些愚蠢,请原谅我。
我在使用PVS-Studio分析项目时发现了一个令人费解的元素。这是重现问题的代码:
class Test
{
public:
const Test &Test::operator=(const Test &test);
};
const Test &Test::operator=(const Test &test) {
if (this == &test)
return test;
return *this;
}
当然,这里不需要此赋值运算符,但是问题出在上面生成的警告PVS-Studio中:
V790奇怪的是,赋值运算符使用非恒定引用来获取对象并返回该对象。
(重点是我的)
我不确定该怎么想。这个非恒定引用在哪里?赋值运算符的参数为const Test &
,即它似乎是常量引用。此外,return test
仅在分配为空操作时才执行,即返回*this
和test
应该没有区别。
这是误报,还是我根本不了解某些内容?