Код: Выделить всё
return_type function(const argument_type & a, argument_type & b);
У меня нет знаний о том, как предположения компилятора распространяются в этом случае. < /p>
Я предполагаю, что это Достаточно достаточных допущений, которые должны быть приняты как неконтролируемые b < /code> и разрешать модификации, но это предположение. < /p>
< Br/> Большинство ответов заключались в том, чтобы быть Able , чтобы изменить или b или вызов неконфессиональных методов. Я знаю, что если я передам тот же объект, что и Const и неконфессиональный , я могу это сделать. Мои сомнения в состоянии более состояния, что я собираюсь покинуть программу, когда функция возвращается, и если она может тормозить некоторые предположения компилятора, например: < /p>
class A(){
int value;
}
void function1(const A & arg1);
void function2(A & arg1);
void function3(const A & arg1, A & arg2);
A a;
a.value=5;
function1(a);
if(a.value==5){/*...*/;} // the if can be optimized out to true, because [a] was const
a.value=5;
function2(a);
if(a.value==5){/*...*/;} //must be checked, [a] could have been modified
a.value=5;
function3(a, a);
if(a.value==5){/*...*/;} // ???
< /code>
Наиболее похожий вопрос, который я нашел (но не на самом деле) < /p>
Изменение самоотдания в методе Const через не постоянный указатель на себя
Подробнее здесь: https://stackoverflow.com/questions/230 ... -correctly