我知道函数不允许改变对象的状态,但我记得在某个地方读到过,如果函数使用相同的参数调用,则编译器可以假定它将返回相同的值,因此如果可用,它可以重用缓存的值。例如:
class object
{
int get_value(int n) const
{
...
}
...
object x;
int a = x.get_value(1);
...
int b = x.get_value(1);
如果是这样,编译器可能会将第二次调用优化掉,并且要么使用寄存器中的值,要么简单地执行b=a;
这是真的吗?