У меня есть класс C++ вроде этого:Может ли компилятор оптимизировать вызов метода?
class MyClass {
int calculate(int arg1) const;
void side_effect(int arg) const;
}
, который используется, как это:
{
MyClass m;
m.calculate(100);
m.side_effect(100);
}
Является ли компилятор свободный пропустить m.calculate()
вызов - так как я не держу на возвращаемое значение? Для метода side_effect()
я действительно надеюсь, что компилятор не сможет пропустить вызов - хотя метод отмечен const
?
EDIT: Причина, я задаю этот вопрос в том, что моя calculate()
функции имеет побочный эффект, но за счет использования mutable
помечаются как const
. Теперь в нормальном случае я хочу удержать возвращаемое значение, и вся проблема спорная, но в случае, проиллюстрированном выше, меня интересует только то, что побочный эффект был вызван (Да, я знаю, что это не Симпатичная ...). Читая ответы/комментарии, я получаю ощущение, что, по вашему мнению, компилятор может определить, имеет ли метод побочные эффекты; что было удивительно для меня?
Результат должен быть как-если бы вызывалась функция. Если это не влияет, как вы можете сказать разницу? –