为什么一个函数的末尾有常量这个词,即使它确实改变了一个变量

Why does a function have the word constant at the end even though it does change a variable

本文关键字:一个 变量 改变 常量 函数 为什么      更新时间:2023-10-16

我对关键字"const"的理解是,它对编译器说,函数不会修改任何变量,但在下面的示例中,它会更改b.d。为什么?

myClass operator + (myClass b) const { b.d += d; return b; }

const函数不能修改this(调用对象)的变量(如果变量不是mutable)。在示例中CCD_ 5没有被修改。所以,这是正确的。

变量CCD_ 6是类别CCD_。

myClass operator + (myClass b) const

myClass operator + (const myClass* this, myClass b)

最好使用member-operator +=not member operator +,例如

myClass& myClass::operator += (const myClass& rhs)
{
    d += rhs.d;
    return *this;
}
myClass operator + (const MyClass& lhs, const MyClass& rhs)
{
   myClass tmp(lhs);
   tmp += rhs;
   return tmp;
}