Тот же объект, что и Const и не консерв, что я должен предположить, чтобы вести себя правильно?C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Тот же объект, что и Const и не консерв, что я должен предположить, чтобы вести себя правильно?

Сообщение Anonymous »

У меня функция формы < /p>

Код: Выделить всё

return_type function(const argument_type & a, argument_type & b);
Если тот же объект передается как и b , могу ли я продолжить функцию (тем самым потенциально его изменяет) или остановка? /p>

У меня нет знаний о том, как предположения компилятора распространяются в этом случае. < /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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»