Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Const в сях вообще...

356
09 марта 2003 года
molnij
159 / / 20.06.2000
Что точно означает модификатор const при вызовах функций, если знаете, то как реализовано, т.е. есть функция:
void f(const int *a, int *b){
b=new int;
*b=*a;
}

будет ли корректно работать эта функция, если я сделаю вызов:
int *c=new int;
*c=2;
f(c,c);

????
2.0K
10 марта 2003 года
segev
67 / / 19.01.2003
molnij
Цитата:

Что точно означает модификатор const при вызовах функций, если знаете, то как реализовано, т.е. есть функция:
void f(const int *a, int *b){
b=new int;
*b=*a;
}


Модификатор const здесь означает, что параметр *a не должен меняться в теле функции. Реализация одинакова и с const'ом и без него, так как отслеживание изменений выполняет компилятор. В случае обнаруженных изменений выдается ошибка компиляции.
Предвидя вопросы :) : все это сделано для того чтобы уменьшить количество глупых ошибок и повысить информативность интерфейса функций. Против "хакерских" методов, вроде изменения const-переменной из ассемблерных вставок, это конечно не работает и работать не должно.

Цитата:

будет ли корректно работать эта функция, если я сделаю вызов:
int *c=new int;
*c=2;
f(c,c);


А почему бы нет ?

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог