为什么PVS-Studio声明存在非恒定引用?

时间:2019-04-19 18:30:43

标签: c++ assignment-operator const-reference pvs-studio

我必须首先承认我对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仅在分配为空操作时才执行,即返回*thistest应该没有区别。

这是误报,还是我根本不了解某些内容?

0 个答案:

没有答案