Const в сях вообще...
void f(const int *a, int *b){
b=new int;
*b=*a;
}
будет ли корректно работать эта функция, если я сделаю вызов:
int *c=new int;
*c=2;
f(c,c);
????
Цитата:
Что точно означает модификатор 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);
А почему бы нет ?