Я понимаю абстрактную функциональность этих трюков с «Уст» являются по вопросам безопасности
Ну, const
Несс не трюк, и это не проблема безопасности в том смысле, что фраза обычно используется
... не давайте программист непреднамеренно изменить положение вещей ...
Да, const
говорит компилятору - и других разработчиков, включая ваше будущее себя - что вы не намерены мутировать что-то
... или не натворить намеренно ...
Нет, потому что вы можете просто использовать const_cast
, чтобы обойти его (где базовый объект действительно изменен). Вы просто не можете это сделать случайно.
... Как это обязательство (быть неизменным) достигается с помощью компилятора ...
Вот так. Это все. Компилятор отказывается компилировать код, который мутирует const
объектов. Если код, который мутирует объекты const
, не компилируется, во время выполнения ничего не нужно делать, и ничего не происходит.
Есть других защиты, в зависимости от вашей операционной системы и аппаратной платформы, от записи в область памяти вашего процесс не должен быть в состоянии изменить: смотрите, например, в UNIX мире SEGV, который, как правило, в жизни вашей памяти аппаратное обеспечение сопоставления адресов и ОС, работающие вместе.
Эти концепции времени исполнения не выражаются непосредственно на языке, хотя они влияют на то, как язык может быть реализован на данной платформе.
... ли с помощью «сопзЬ» в (C/C++) код ухудшать производительности ...
Нет, const
обычно используется, чтобы более ясно, как ваш код предназначен для выражения вести себя, и эта дополнительная информация иногда позволяет компилятору сделать более оптимизаций. Я не могу придумать очевидную причину, по которой он будет делать что-то медленнее, если только оно не приведет к копиям, которые можно избежать в противном случае.
«Использование« const »в коде (C/C++) ухудшает производительность», nope; если что-то это поможет производительности. – George
'const 'не имеет ничего общего с операционной системой, если только он не находится в исходном коде операционной системы. 'Const' видна только компилятору. –