Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > вопрос про const


Автор: gosn1ck 1.6.2009, 21:32
глупый вопрос, но всё же хотелось бы разобраться до конца в разнице между

Код

int fun(int a) const;
const int fun(int a);
const int fun(int a) const;


правильно ли я понимаю, что в первый случай запрещает модификацию a ? если да, то тогда в чем отличие от int fun(const int a); ? или в int fun(int a) const; нельзя вообще применять операцию присваивания?

второй случай мне понятен лишь тем что постоянен возвращаемый результат, но постоянен относительно чего? можете кто-нибудь привести примерчик?

спасибо за внимание smile

Автор: mes 1.6.2009, 21:49
Цитата(gosn1ck @  1.6.2009,  20:32 Найти цитируемый пост)
правильно ли я понимаю, что в первый случай запрещает модификацию a ? е

нет, он запрящает модификацию дата-членов объекта this и такой модификатор может быть применен только к нестатическим функциям-членам.

Код

class T { int fun(int a) const; }
нагляднее выглядит так :
int T::a ([T const * this],int a); //  где часть в квадратных скобках подставляется компилятором



Добавлено через 2 минуты и 49 секунд
Цитата(gosn1ck @  1.6.2009,  20:32 Найти цитируемый пост)
const int fun(int a) const;

const int применять смысла нет( особенно для возвращаемого значения) (в отличие от const int&), так как объект будет передаваться как копия , а не по ссылке/указателю.

Добавлено через 4 минуты и 56 секунд
Цитата(gosn1ck @  1.6.2009,  20:32 Найти цитируемый пост)
второй случай мне понятен лишь тем что постоянен возвращаемый результат, но постоянен относительно чего? можете кто-нибудь привести примерчик?

второй случай лишь говорит о том, что модифицировать возвращаемое значение нельзя. Но это не мешает присвоить копию возвращаемого значения не константной int-переменой  и модифицировать ее.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)