С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
1 / 1 / 0
Регистрация: 27.07.2015
Сообщений: 15
1

Как работает const?

07.12.2015, 23:09. Показов 1446. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Каким образом он защищает данные от изменения ? Т.е. это происходит на этапе компиляции; это закладывается в программу в виде дополнительного кода, который отслеживает изменения; это ложится на плечи ОС. Как? Взять например какой-нибудь редактор памяти - он сможет изменить это значение во время работы программы? Чем с точки зрения вычислительной машины const данные отличаются от не-const? Нигде в учебниках такой вопрос не освящается...
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.12.2015, 23:09
Ответы с готовыми решениями:

Как работает идентификатор const?
Доброго времени суток! Вопрос беспокоит. В данный момент я пишу класс исключений и необходимо,...

int const * const foo(const int* param) const - разъясните значение квалификаторов
int const * const foo(const int* param) const -----1------2----------3----------------4 1: ?...

Static CONST =10; Как это работает?
class class1 { public static final int CONST; static { CONST = 10; } } Что это...

Не работает set of в разделе const
Не работает set of в разделе const: program Project1; {$mode objfpc}{$H+} uses {$IFDEF...

3
Эксперт С++
8483 / 6150 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
07.12.2015, 23:16 2
Цитата Сообщение от flaK Посмотреть сообщение
Каким образом он защищает данные от изменения ?
Просто компилятор ругается и не дает собрать код в котором видит явное нарушение.
Но никто не мешает грубо использовать const_cast<> или приводить в стиле си, на что компилятор проглотит (продумав про себя сам себе дурак) код без каких либо ошибок со всеми отягчающими последствиями.
0
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
07.12.2015, 23:19 3
Лучший ответ Сообщение было отмечено flaK как решение

Решение

Модификатор const существует только на этапе компиляции.
2
Evg
Эксперт CАвтор FAQ
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
07.12.2015, 23:41 4
Глобальные переменные с признаком const обычно кладутся в специальные секции, которые на этапе исполнения программы попадают в read-only страницы и запись в них будет вызывать слом

Такой код будет работать, т.к. в момент исполнения в нём реально ничего не предпринимается для запрета записи:

C
int main (void)
{
  const int a = 5;
  int *p = (int*) &a;
  *p = 0;
  return 0;
}
А вот такой код на культурных системах сломается при исполнении, т.к. переменная "a" попадёт в read-only секцию

C
const int a = 5;
 
int main (void)
{
  int *p = (int*) &a;
  *p = 0;
  return 0;
}
2
07.12.2015, 23:41
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.12.2015, 23:41
Помогаю со студенческими работами здесь

char operator[](unsigned short offset) const; // что означает const?
Собстенно вопрос уже озвучен :).

Что это bool operator== (const CLASS&) const;
Что это? class CLASS { public: bool operator== (const CLASS&amp;) const; ...

Отрисовка линий движения материальной точки при u_1=const и u_2=const
Добрый день. У меня не получается построить графики движения материальной точки для u_1=const и...

Const в параметрах. Перед чем нужно употребить const дабы обезопасить данные от изменения
const int Counter(const TSNum *Start) { int c=0; while(Start!=NULL){Start=Start-&gt;next;} ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru