我知道该函数不允许更改对象的状态,但我想我在某处读过允许编译器假设如果使用相同的参数调用函数,它将返回相同的值,因此可以重用缓存值(如果可用).例如
class object
{
int get_value(int n) const
{
...
}
...
object x;
int a = x.get_value(1);
...
int b = x.get_value(1);
Run Code Online (Sandbox Code Playgroud)
然后编译器可以优化第二个调用,并使用寄存器中的值或只是执行 b = a;
这是真的?
给出这样的声明:
class A {
public:
void Foo() const;
};
Run Code Online (Sandbox Code Playgroud)
这是什么意思?
谷歌出现了这个:
如果成员函数可以在const(this)对象上操作,则应在其后面使用const关键字声明它们.如果函数未声明为const,则无法应用于const对象,并且编译器将给出错误消息.
但我发现有点令人困惑; 任何人都可以用更好的条件吗?
谢谢.