Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> 2 использования const 
:(
    Опции темы
 
используете ли вы конструкциb из первого поста?
да, обе [ 10 ]  [24.39%]
да, обе, но нередко забываю [ 4 ]  [9.76%]
только 1 [ 4 ]  [9.76%]
только 1, но нередко забываю [ 2 ]  [4.88%]
только 2 [ 3 ]  [7.32%]
только 2, но нередко забываю [ 1 ]  [2.44%]
нет, но думаю, что надо бы [ 1 ]  [2.44%]
нет, и не собираюсь [ 14 ]  [34.15%]
имхо, это извращения [ 2 ]  [4.88%]
Всего проголосовавших: 41
В этом опросе возможен один вариант ответа
Гости не могут голосовать 
Alek86
Дата 22.4.2009, 11:45 (ссылка) |  (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1299
Регистрация: 30.1.2007
Где: Киев

Репутация: 21
Всего: 25



опрос чисто познавательный - типо как распространено подобное использование конста

1.
Код

{
 const int i = GetValue();
 // теперь i уже случайно не изменишь
}


2.
Код

void Function(const int  i) {
 // i внутри функции константна, случайно не изменишь
}


для не знающих - обычно их юзают фанаты конста и любители отдавать компилятору побольше мартышкиного труда smile



--------------------
user posted image    user posted image
PM MAIL   Вверх
zim22
Дата 22.4.2009, 11:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 24
Всего: 69



Цитата(Alek86 @  22.4.2009,  11:45 Найти цитируемый пост)
void Function(const int  i) {

я предпочитаю передавать параметры по константной ссылке.
Код

void Function(const int  &i) {



--------------------
PM MAIL   Вверх
Alek86
Дата 22.4.2009, 11:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1299
Регистрация: 30.1.2007
Где: Киев

Репутация: 21
Всего: 25



zim22, для большинства целых чисел это лишние затраты
они сами прекрасно в 4 байта влазят (то есть происходит копирование), а так ты копируешь указатель на них, да еще и юзаешь свой i через указатель


--------------------
user posted image    user posted image
PM MAIL   Вверх
zim22
Дата 22.4.2009, 12:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 24
Всего: 69



Цитата(Alek86 @  22.4.2009,  11:57 Найти цитируемый пост)
для большинства целых чисел это лишние затраты

буду знать.
но объекты классов удобней передавать через константную ссылку.
пример: 
Код

void f(const string &s);
f("hello"); 


Это сообщение отредактировал(а) zim22 - 22.4.2009, 12:04


--------------------
PM MAIL   Вверх
Lazin
Дата 22.4.2009, 12:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 41
Всего: 154



ни то ни другое
PM MAIL Skype GTalk   Вверх
maxim1000
Дата 22.4.2009, 12:44 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 17
Всего: 110



Цитата(Alek86 @  22.4.2009,  11:45 Найти цитируемый пост)
const int i = GetValue();

пользуюсь, именно для того, чтобы дать понять, что эта переменная не задумывалась для изменения


Цитата(Alek86 @  22.4.2009,  11:45 Найти цитируемый пост)
void Function(const int  i)

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


--------------------
qqq
PM WWW   Вверх
SABROG
Дата 22.4.2009, 12:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 4
Всего: 91



У меня часто бывает такое, что придумываешь тщательно интерфейс, прописываешь const  и т.д., а потом решаешь что-то добавить или изменить в коде и приходится делать рефакторинг. Поэтому я лишний раз теперь и функции как const не объявляю, если четко не уверен, будет ли она меняться.

Другое дело, что потом лень всё это прописывать ;)

Это сообщение отредактировал(а) SABROG - 22.4.2009, 12:51


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
vinter
Дата 22.4.2009, 12:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: 13
Всего: 56



Цитата

 нет, и не собираюсь



--------------------
Мой блог
PM MAIL WWW   Вверх
mes
Дата 22.4.2009, 13:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



да, если этого требует логика программы.

например этот код не представляю без конст:
Код

int arr[] = ..
const int size =sizeof(arr)/s..



Цитата(Alek86 @  22.4.2009,  10:57 Найти цитируемый пост)
а так ты копируешь указатель на них, да еще и юзаешь свой i через указатель 

Правда ?  smile

Добавлено через 1 минуту и 45 секунд
P.S. так как не встречался с необходимостью 2го случая, голосую только за первый, но предполагаю что и для второго может быть ситуация. 



--------------------
PM MAIL WWW   Вверх
mrbrooks
Дата 22.4.2009, 13:39 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 2
Всего: 306



оно как то не кошерно. 
особенно это  smile 
Цитата
    
void Function(const int  &i) { }

PM MAIL   Вверх
Alek86
Дата 22.4.2009, 13:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1299
Регистрация: 30.1.2007
Где: Киев

Репутация: 21
Всего: 25



Цитата(mes @  22.4.2009,  13:24 Найти цитируемый пост)
Правда ?

правда
без оптимизации по крайней мере
потому в бусте и есть функционал а-ля boost::call_traits<T>::param_type


--------------------
user posted image    user posted image
PM MAIL   Вверх
MTWizard
Дата 23.4.2009, 10:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 8.10.2007
Где: Київ

Репутация: 3
Всего: 4



Юзаю обе конструкции.
Причём, для тех кто не знает про вторую:

В объявлении функции можно писать
Код
void foo(int i);

а потом в реализации
Код
void foo(const int i) {...}

Так что ничего лишнего в интерфейс не выносится
PM MAIL   Вверх
Alek86
Дата 23.4.2009, 12:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1299
Регистрация: 30.1.2007
Где: Киев

Репутация: 21
Всего: 25



оффтоп
жаль тот, кто за извращения проголосовал, не высказался...


ЗЫ. этот оффтоп, чтоб голосование на первой странице еще подержать smile


--------------------
user posted image    user posted image
PM MAIL   Вверх
zim22
Дата 23.4.2009, 12:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 24
Всего: 69



Цитата(MTWizard @  23.4.2009,  10:49 Найти цитируемый пост)
Так что ничего лишнего в интерфейс не выносится

со ссылками такой фокус не прокатит.
Код

void foo(int &i);
void foo(const int &i) {}

error LNK2019: unresolved external symbol "void __cdecl foo(int &)"


--------------------
PM MAIL   Вверх
Cтpaнник
Дата 23.4.2009, 12:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 53
Регистрация: 12.10.2008
Где: Россия, Санкт-Пет ербург

Репутация: нет
Всего: нет



Пользую обе конструкции. Вторую, правда, с int - не в пример реже.
С моей точки зрения, это есть (даже в тривиальных случаях) документирование намерений разработчика об использовании переменных - если переменная по дизайну не должна меняться, то она должна быть константной. В случае, если изменяется дизайн и в соответствии с новым дизайном переменную требуется изменять - квалификатор const можно столь явно же и убрать.

Можно считать этот подход паранойей. smile

PM MAIL   Вверх
Alek86
Дата 23.4.2009, 12:39 (ссылка) |  (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1299
Регистрация: 30.1.2007
Где: Киев

Репутация: 21
Всего: 25



Cтpaнник, вопрос был именно про нессылки
с ссылками давно все ясно smile

а с точки зрения дизайна пофик, будет ли разработчик внутри своей функции нессылки менять, все равно на конечном результате функции это не скажется


--------------------
user posted image    user posted image
PM MAIL   Вверх
Cтpaнник
Дата 23.4.2009, 12:52 (ссылка)  | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 53
Регистрация: 12.10.2008
Где: Россия, Санкт-Пет ербург

Репутация: нет
Всего: нет



С вопросом я все понял.
А вот с точки зрения дизайна, даже для просто int переменных - я считаю, что если разработчик не должен менять переданный в функцию аргумент, то он не должен суметь этого сделать никогда. Это - одна из гарантий, которая ему предоставляется интерфейсом. И const в данном случае - ему в помощь.
Можно отнести наше расхождение во мнениях к разряду религиозных верований smile

PS.  То, что изменение не повлияет на конечный результат..... хмм..... я видывал и обратное. Продукты всякие бывают, в том числе - с совершенно некошерным legacy кодом, которого - брррр! - сотни килострок (KSLOC).
PM MAIL   Вверх
J0ker
Дата 23.4.2009, 16:27 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 986
Регистрация: 17.9.2008

Репутация: 4
Всего: 14



Цитата(Cтpaнник @  23.4.2009,  12:52 Найти цитируемый пост)
Это - одна из гарантий, которая ему предоставляется интерфейсом. И const в данном случае - ему в помощь.

во-первых, внутря функции - это никаким макаром не интерфейс
во-вторых, в том случае, если разраб страдает потерей кратковеменной памяти в тяжелой форме, то в этом случае у него есть гораздо более серьезные проблемы, чем какие-то параметры  smile 


Это сообщение отредактировал(а) J0ker - 23.4.2009, 16:40


--------------------
user posted image
PM MAIL   Вверх
Любитель
Дата 23.4.2009, 17:23 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 24
Всего: 92



Цитата(Alek86 @  23.4.2009,  12:39 Найти цитируемый пост)
а с точки зрения дизайна пофик, будет ли разработчик внутри своей функции нессылки менять, все равно на конечном результате функции это не скажется

Не верно. Передаём какой-нибудь implicit sharing объект. Не по ссылке. Без конста. Вызываем метод без конст-модификатора. Портятся данные как для копии объекта в функции, так и для самого переданного объекта.

Цитата(J0ker @  23.4.2009,  16:27 Найти цитируемый пост)
во-первых, внутря функции - это никаким макаром не интерфейс
во-вторых, в том случае, если разраб страдает потерей кратковеменной памяти в тяжелой форме, то в этом случае у него есть гораздо более серьезные проблемы, чем какие-то параметры

Сигнатура функции - это интерфейс. В любом случае. А так давай - и от прайватов и прочих откажемся.. Девелоперы умные - пускай сами помнят smile

Моё мнение (для обоих случаев):
1. Использую часто. Единственное - подобные вещи выношу на начало функции.
2. Если физически (см. начало моего сообщения) вариант без конста отличается от вариант с констом, то тоже использую (если логически мне нужна конст-версия).


--------------------
PM MAIL ICQ Skype   Вверх
J0ker
Дата 23.4.2009, 19:19 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 986
Регистрация: 17.9.2008

Репутация: 4
Всего: 14



Цитата(Любитель @  23.4.2009,  17:23 Найти цитируемый пост)
Не верно. 

естественно верно, т.к. речь исключительно о базовых типах

Цитата(Любитель @  23.4.2009,  17:23 Найти цитируемый пост)
Сигнатура функции - это интерфейс.

я и говорю - внутря функции - это нихрена не интерфейс

Цитата(Любитель @  23.4.2009,  17:23 Найти цитируемый пост)
В любом случае.

нет
внутря функции - это нихрена не интерфейс

Цитата(Любитель @  23.4.2009,  17:23 Найти цитируемый пост)
А так давай - и от прайватов и прочих откажемся.. Девелоперы умные - пускай сами помнят 

вы путаете отношения между девелопером и пользователем с отношениями между девелопером и его-же функциональными нарушениями мозговой деятельности



--------------------
user posted image
PM MAIL   Вверх
Любитель
Дата 23.4.2009, 19:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 24
Всего: 92



Цитата(J0ker @  23.4.2009,  19:19 Найти цитируемый пост)
естественно верно, т.к. речь исключительно о базовых типах

Где в той цитате, на которую я отвечал было об этом сказано? ;) Реьч только о "нессылках".

Цитата(J0ker @  23.4.2009,  19:19 Найти цитируемый пост)
я и говорю - внутря функции - это нихрена не интерфейс

Так.. ещё раз. Смотрим внимательно историю:

Цитата(Cтpaнник @  23.4.2009,  12:52 Найти цитируемый пост)
А вот с точки зрения дизайна, даже для просто int переменных - я считаю, что если разработчик не должен менять переданный в функцию аргумент, то он не должен суметь этого сделать никогда. Это - одна из гарантий, которая ему предоставляется интерфейсом

Цитата(J0ker @  23.4.2009,  16:27 Найти цитируемый пост)
во-первых, внутря функции - это никаким макаром не интерфейс

"переданный в функцию аргумент" - т. е. параметр функции, т. е. речь о сигнатуре функции.

Цитата(J0ker @  23.4.2009,  19:19 Найти цитируемый пост)
вы путаете отношения между девелопером и пользователем с отношениями между девелопером и его-же функциональными нарушениями мозговой деятельности

Бррр... Что есть пользователь, что есть девелопер? Тот, кто функцию вызывает - девелопер или пользователь? smile


--------------------
PM MAIL ICQ Skype   Вверх
Lazin
Дата 23.4.2009, 19:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 41
Всего: 154



Цитата(Любитель @  23.4.2009,  17:23 Найти цитируемый пост)
Не верно. Передаём какой-нибудь implicit sharing объект. Не по ссылке. Без конста. Вызываем метод без конст-модификатора. Портятся данные как для копии объекта в функции, так и для самого переданного объекта.


речь шла о POD типах, если мы передаем в ф-ю какой-нибудь shared_ptr, и объект на который он указывает нельзя менять в этой ф-ии, то естественно нужен const...
PM MAIL Skype GTalk   Вверх
Любитель
Дата 23.4.2009, 20:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 24
Всего: 92



Ммм... Может я слепой, но где было сказано, что речь о POD-типах?!


--------------------
PM MAIL ICQ Skype   Вверх
Alek86
Дата 23.4.2009, 20:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1299
Регистрация: 30.1.2007
Где: Киев

Репутация: 21
Всего: 25



Цитата(Любитель @  23.4.2009,  17:23 Найти цитируемый пост)
Не верно. Передаём какой-нибудь implicit sharing объект. Не по ссылке. Без конста. Вызываем метод без конст-модификатора. Портятся данные как для копии объекта в функции, так и для самого переданного объекта.

а можно это на пальцах, для тупых?
я передаю аргумент по значению, значит перед вызовом функции он скопируется в стек... что дальше?
и что такое "implicit sharing объект"?

Добавлено через 4 минуты и 19 секунд
а, дошло smile

Добавлено через 6 минут и 23 секунды
как афтар опроса, скажу - вопрос не ограничивался ПОД типами
правда я не учел implicit sharing объектов, потому написал int


--------------------
user posted image    user posted image
PM MAIL   Вверх
J0ker
Дата 23.4.2009, 21:36 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 986
Регистрация: 17.9.2008

Репутация: 4
Всего: 14



Цитата(Любитель @  23.4.2009,  19:25 Найти цитируемый пост)
Где в той цитате, на которую я отвечал было об этом сказано? ;) Реьч только о "нессылках".

ну как-бы здравый смысл

Цитата(Любитель @  23.4.2009,  19:25 Найти цитируемый пост)
"переданный в функцию аргумент" - т. е. параметр функции, т. е. речь о сигнатуре функции.

изнутри функции - это не сигнатура - это типы переменных

Цитата(Любитель @  23.4.2009,  19:25 Найти цитируемый пост)
Бррр... Что есть пользователь, что есть девелопер? Тот, кто функцию вызывает - девелопер или пользователь?

тот кто вызывает - пользователь

Добавлено через 6 минут и 44 секунды
Цитата(Alek86 @  23.4.2009,  20:59 Найти цитируемый пост)
как афтар опроса, скажу - вопрос не ограничивался ПОД типами


Цитата(J0ker @  23.4.2009,  21:36 Найти цитируемый пост)
ну как-бы здравый смысл


т.е. здравый смысл автору чужд
так и запишем


--------------------
user posted image
PM MAIL   Вверх
Любитель
Дата 23.4.2009, 22:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 24
Всего: 92




 ! 
Любитель
J0ker, давай будем повежливей!;)


Цитата(Alek86 @  23.4.2009,  20:59 Найти цитируемый пост)
правда я не учел implicit sharing объектов, потому написал int 

Да, кстати с explicit sharing-ом такое тоже прокатит smile

Цитата(J0ker @  23.4.2009,  21:36 Найти цитируемый пост)
изнутри функции - это не сигнатура - это типы переменных

Хорошо. А снаружи? smile

Цитата(J0ker @  23.4.2009,  21:36 Найти цитируемый пост)
тот кто вызывает - пользователь

Любопытно.. Впрочем ладно - с модификаторами доступа несколько иная ситуация, неудачный я пример привёл. А вот скажем конст - как модификатор метода класса (для классов, меняющих только mutable поля) вы используете?

Это сообщение отредактировал(а) Любитель - 23.4.2009, 22:50


--------------------
PM MAIL ICQ Skype   Вверх
UnrealMan
Дата 23.4.2009, 23:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 722
Регистрация: 30.3.2006

Репутация: 27
Всего: 32



Цитата(Любитель @  23.4.2009,  17:23 Найти цитируемый пост)
Не верно. Передаём какой-нибудь implicit sharing объект. Не по ссылке. Без конста. Вызываем метод без конст-модификатора. Портятся данные как для копии объекта в функции, так и для самого переданного объекта.

Нормальные классы (в том числе использующие идиому COW) не позволяют обходить логическое постоянство простым копированием объекта (ибо какой тогда толк с поддержки константности, которую так легко нарушить?).

Цитата(Любитель @  23.4.2009,  17:23 Найти цитируемый пост)
Сигнатура функции - это интерфейс. В любом случае.

Вот только константность параметра частью сигнатуры не является.

Код
#include <iostream>

void f(const int n); // то же самое, что void f(int n)

int main()
{
    f(0);
}

void f(int n)
{
    n = 1;
    std::cout << n << std::endl;
}

PM MAIL   Вверх
J0ker
Дата 24.4.2009, 01:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 986
Регистрация: 17.9.2008

Репутация: 4
Всего: 14



Цитата(Любитель @  23.4.2009,  22:50 Найти цитируемый пост)
А вот скажем конст - как модификатор метода класса (для классов, меняющих только mutable поля) вы используете?

естественно
иначе как работать с константным объектом



--------------------
user posted image
PM MAIL   Вверх
vinter
Дата 24.4.2009, 06:22 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: 13
Всего: 56



Цитата(Любитель @  23.4.2009,  18:23 Найти цитируемый пост)
Не верно. Передаём какой-нибудь implicit sharing объект. Не по ссылке. Без конста. Вызываем метод без конст-модификатора. Портятся данные как для копии объекта в функции, так и для самого переданного объекта.

не-POD типы никто по значению и не передает, если явно не требуется. А потребоваться это может только в одном случае - обьект надо изменять внутри ф-ии, а значит и cons Type не катит. Так, что не рассамытриваем этот вариант smile

Цитата(Любитель @  23.4.2009,  18:23 Найти цитируемый пост)
Сигнатура функции - это интерфейс.

Интерфейс к чему? Сигнатура это сигнатура, интерфейс может быть у класса, у ф-ии нет интерфейса.



--------------------
Мой блог
PM MAIL WWW   Вверх
mes
Дата 24.4.2009, 11:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(vinter @  24.4.2009,  05:22 Найти цитируемый пост)
Интерфейс к чему? Сигнатура это сигнатура, интерфейс может быть у класса, у ф-ии нет интерфейса.

набор сигнатур функций библиотеки/класса доступных для вызова есть интерфейс библиотеки/класса.
сигнатура функции есть интерфейс функции.
 smile 





--------------------
PM MAIL WWW   Вверх
Lazin
Дата 24.4.2009, 11:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 41
Всего: 154



Цитата(vinter @  24.4.2009,  06:22 Найти цитируемый пост)
не-POD типы никто по значению и не передает, если явно не требуется. А потребоваться это может только в одном случае - обьект надо изменять внутри ф-ии, а значит и cons Type не катит. Так, что не рассамытриваем этот вариант

а если не POD класс имеет семантику значений? о чем собственно речь и шла smile 
PM MAIL Skype GTalk   Вверх
vinter
Дата 24.4.2009, 13:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: 13
Всего: 56



Цитата(mes @  24.4.2009,  12:34 Найти цитируемый пост)
сигнатура функции есть интерфейс функции.

налицо явное не понимание слова интерфейс, интерфейс может быть у объекта с которым человек работает, т.е интерфейс это набор методов\функциональности который пользователь может использовать для взаимодействия с обьектом, с ф-ие пользователь не взаимодействует, он ее использует. Т.е ф-ия может быть частью интерфейса, но сама интерфейсом не является.
Lazin, пример можешь привести?


--------------------
Мой блог
PM MAIL WWW   Вверх
Lazin
Дата 24.4.2009, 13:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 41
Всего: 154



уже приводил

Код

void foo( shared_ptr<Bar> p )
{
   тут можно изменить объект на который ссылается p
}

void cfoo( const shared_ptr<Bar> p )
{
  а тут нет
}

PM MAIL Skype GTalk   Вверх
Alek86
Дата 24.4.2009, 13:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1299
Регистрация: 30.1.2007
Где: Киев

Репутация: 21
Всего: 25



Lazin, можно
Код

namespace boost {

  class bad_weak_ptr: public std::exception;

  template<class T> class weak_ptr;

  template<class T> class shared_ptr {

    public:
// ...
T * get() const; // never throws
// ...


Добавлено через 51 секунду
а дальше делай, что хочешь
нельзя изменить, если
Код
void cfoo( shared_ptr<const Bar> p )


Добавлено через 3 минуты и 2 секунды
хотя reset уже не вызовешь - и то радость smile


--------------------
user posted image    user posted image
PM MAIL   Вверх
mes
Дата 24.4.2009, 14:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(vinter @  24.4.2009,  12:41 Найти цитируемый пост)
интерфейс может быть у объекта с которым человек работает, 

т.е  по Вашему при процедурном стиле программирования или в функциональном слово "интерфейс" не применимо ?!
Цитата(vinter @  24.4.2009,  12:41 Найти цитируемый пост)
налицо явное не понимание слова интерфейс

во во, и я это заметил  smile 
вот к примеру :
http://ru.wikipedia.org/wiki/%D0%98%D0%BD%...%B5%D0%B9%D1%81

обратите внимание на
Цитата
В контексте отдельного элемента интерфейс элемента противоположен реализации элемента (внутреннему устройству и функционированию). 


Это сообщение отредактировал(а) mes - 24.4.2009, 14:25


--------------------
PM MAIL WWW   Вверх
vinter
Дата 24.4.2009, 14:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: 13
Всего: 56



Цитата(mes @  24.4.2009,  15:14 Найти цитируемый пост)
т.е при процедурном стиле программирования или в функциональном слово "интерфейс" не применимо ?!

применимо конечно, вот например в С есть интерфейс работы с файлами, это структура FILE и все ф-ии которые работают с этой структурой и поставляются с ней вместе. Здесь в роли объекта выступает файл.
Только причем тут это, вы тут народу впариваете что сигнатура ф-ии есть ее интерфейс, а это чушь.

Lazin, ок, притворимся, что поста Alek86 вообще не было. Я переписываю твой второй пример на 
Код

void cfoo( const shared_ptr<Bar>& p )
{
  а тут нет
}

и мы имеем то же самое, но с передачей по ссылке. Зачем нам нужен был изврат с передачей по значению?


--------------------
Мой блог
PM MAIL WWW   Вверх
Alek86
Дата 24.4.2009, 14:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1299
Регистрация: 30.1.2007
Где: Киев

Репутация: 21
Всего: 25



Цитата(vinter @  24.4.2009,  14:24 Найти цитируемый пост)
Зачем нам нужен был изврат с передачей по значению?

shared_ptr часто для многопоточных приложений используется
при вызове cfoo при создании другого потока должна быть передача по значению


--------------------
user posted image    user posted image
PM MAIL   Вверх
mes
Дата 24.4.2009, 14:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(vinter @  24.4.2009,  13:24 Найти цитируемый пост)
вы тут народу впариваете 

попрошу поаккуратней с выражениями.

Цитата(vinter @  24.4.2009,  13:24 Найти цитируемый пост)
сигнатура ф-ии есть ее интерфейс

да,(в зависимости от контекста с именем или без)
к примеру в псевдокоде

Код

// функция any_func предоставляет нам интерфейс
__interface (any_func)  =  int () (int);

//и рeализацию
__implementation (any_func) : __args (i) = {   __result = ++i;  }

//



Это сообщение отредактировал(а) mes - 24.4.2009, 14:49


--------------------
PM MAIL WWW   Вверх
vinter
Дата 24.4.2009, 14:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: 13
Всего: 56



Цитата(Alek86 @  24.4.2009,  15:36 Найти цитируемый пост)
shared_ptr часто для многопоточных приложений используетсяпри вызове cfoo при создании другого потока должна быть передача по значению

тогда shared_ptr тут вообще не нужен, здесь логичнее использовать weak_ptr

Цитата(mes @  24.4.2009,  15:42 Найти цитируемый пост)
функция any_func предоставляет нам интерфейс

mes, еще раз тебе объясняю, интерфейс должен быть к чему то, он не может сам по себе витать в воздухе. То что ты привел, это разделение декларации и определения, то что это кто-то называет разделение интерфейса и реализации это не верно!
Можно назвать разделением интерфейса .h и .cpp где в .h файле содержится группа ф-ий которые составляют интерфейс к некому логическому объекту, который их вокруг себя объединяет. 


--------------------
Мой блог
PM MAIL WWW   Вверх
mes
Дата 24.4.2009, 14:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(vinter @  24.4.2009,  13:52 Найти цитируемый пост)
mes, еще раз тебе объясняю, интерфейс должен быть к чему то, он не может сам по себе витать в воздухе. 

 smile никакого воздуха : _интерфейс функции_ smile

Добавлено @ 15:04
Цитата(vinter @  24.4.2009,  13:52 Найти цитируемый пост)
. То что ты привел, это разделение декларации и определения,

нет, Вы не с той стороны смотрите, всецело поглащены правилами грамматики cpp. Взгляните шире.
Интерфейс у функции есть, даже если нет декларации.   smile 
Определение функции в cpp описывает и интерфейс и реализацию функцию.
А вынос деклараций в хидер описывает интерфейс  "библиотеки" (набора функциональности)

Добавлено через 12 минут и 7 секунд
Цитата(vinter @  24.4.2009,  13:52 Найти цитируемый пост)
некому логическому объекту, который их вокруг себя объединяет.  

вот вот, а  что является логическим объектом решает контекст рассмотрения. И ничего не мешает быть логическим объектом одной маленькой  функции. smile

Это сообщение отредактировал(а) mes - 24.4.2009, 15:07


--------------------
PM MAIL WWW   Вверх
vinter
Дата 24.4.2009, 15:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: 13
Всего: 56



Цитата(mes @  24.4.2009,  15:58 Найти цитируемый пост)
вот вот, а  что является логическим объектом решает контекст рассмотрения. И ничего не мешает быть логическим объектом одной маленькой  функции. 

нет не может. Я устал с тобой спорить, читай Саттера до просветления.

Добавлено через 46 секунд
Цитата(mes @  24.4.2009,  15:58 Найти цитируемый пост)
_интерфейс функции_

у ф-ии нет и не может быть интерфейса, т.к интерфейс бывает только у объекта. Ф-ия это действие.


--------------------
Мой блог
PM MAIL WWW   Вверх
Fazil6
Дата 24.4.2009, 15:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

Репутация: 35
Всего: 60



Цитата(vinter @  24.4.2009,  15:17 Найти цитируемый пост)
у ф-ии нет и не может быть интерфейса, т.к интерфейс бывает только у объекта. Ф-ия это действие. 

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

PM MAIL   Вверх
azesmcar
Дата 24.4.2009, 15:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 81
Всего: 211



Опять споры по поводу терминологии...

Добавлено через 8 минут и 24 секунды
Цитата

интерфейс бывает только у объекта. Ф-ия это действие. 

А у устройства может быть интерфейс? Или у класса? а у приложения?
Цитата

вы тут народу впариваете 

Цитата

читай Саттера до просветления

грубо товарищь.

Это сообщение отредактировал(а) azesmcar - 24.4.2009, 15:41
PM   Вверх
mes
Дата 24.4.2009, 16:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(vinter @  24.4.2009,  14:17 Найти цитируемый пост)
нет не может. Я устал с тобой спорить, читай Саттера до просветления.

классная аргументация, без комментариев.


--------------------
PM MAIL WWW   Вверх
vinter
Дата 24.4.2009, 16:01 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: 13
Всего: 56



Цитата(azesmcar @  24.4.2009,  16:40 Найти цитируемый пост)
А у устройства может быть интерфейс? Или у класса? а у приложения?

все что ты перечислил является объектами.

Цитата(Fazil6 @  24.4.2009,  16:37 Найти цитируемый пост)
а mes говорит, что может...

так пусть он аргументирует, как у action может быть интерфейс ;)

Добавлено через 1 минуту и 24 секунды
Цитата(mes @  24.4.2009,  17:00 Найти цитируемый пост)
классная аргументация, без комментариев.

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


--------------------
Мой блог
PM MAIL WWW   Вверх
azesmcar
Дата 24.4.2009, 16:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 81
Всего: 211



Цитата

все что ты перечислил является объектами.

Я тоже об этом..интерфейс немного широкое понятие.
Цитата

Этот термин используется практически во всех областях науки и техники. Его значение относится к любому сопряжению взаимодействующих сущностей. Под интерфейсом понимают не только устройства, но и правила (протокол) взаимодействия этих устройств.

В контексте отдельного элемента интерфейс элемента противоположен реализации элемента (внутреннему устройству и функционированию). Пользователю элемента незачем знать, как реализован используемый элемент, чтобы управлять им, но используемый элемент должен предоставить интерфейс управления. Например, водителю вовсе не обязательно знать, как устроен двигатель, чтобы управлять автомобилем, достаточно пользоваться интерфейсом автомобиля (рулем и педалями).

Правда признаюсь сам я не слышал термин интерфейс функции, по моему у интерфейса есть функции, у функции есть сигнатура, но это очень широкий термин чтобы спорить о его уместности в каком либо более менее логичном контексте.
PM   Вверх
mes
Дата 24.4.2009, 16:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(vinter @  24.4.2009,  15:01 Найти цитируемый пост)
Я тебя отослал к классику 

выше в том месте откуда начался спор, контекст подразумевал контракт разроботчика и пользователя на функцию (Т.е объектом выступала конкретно одна функция)
А классик говорит в контексте ооп, так что данный отсыл к классику бесполезен, в связи с одноточечным рассмотрением проблемы.

Цитата(vinter @  24.4.2009,  15:01 Найти цитируемый пост)
 могу еще отослать к словарям  

давайте 

Цитата(vinter @  24.4.2009,  15:01 Найти цитируемый пост)
так пусть он аргументирует, как у action может быть интерфейс ;)

после того, как определимся со словарем  smile

Цитата(vinter @  24.4.2009,  15:01 Найти цитируемый пост)
я аргументы привел, ты лбом уперся и твердишь одно и тоже заведомо ложное утверждение. 

Не забывайте и о том, что я вижу то же самое smile


Это сообщение отредактировал(а) mes - 24.4.2009, 16:26


--------------------
PM MAIL WWW   Вверх
vinter
Дата 24.4.2009, 16:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: 13
Всего: 56



Цитата(mes @  24.4.2009,  17:23 Найти цитируемый пост)
давайте 

просвещайся


--------------------
Мой блог
PM MAIL WWW   Вверх
JackYF
Дата 24.4.2009, 16:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



Нет, и не собираюсь.


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
Любитель
Дата 24.4.2009, 16:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 24
Всего: 92




 ! 
Любитель
Ребята, давайте жить дружно;) А то какой-то злой холивар уже получается, не характерно это для винграда...



--------------------
PM MAIL ICQ Skype   Вверх
mes
Дата 24.4.2009, 17:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(vinter @  24.4.2009,  15:36 Найти цитируемый пост)
просвещайся 

Цитата

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


Цитата(vinter @  24.4.2009,  14:17 Найти цитируемый пост)
Ф-ия это действие. 

Нет, функция это контракт на действие. И, с точки зрения договора, контракт является объектом и имеет следующие методы взаимодействия :
1. метод вызова реализации ф-ции,  параметры и характеристики которого определяются разработчиком функции.
2. метод взятия адреса.

smile 



Это сообщение отредактировал(а) mes - 24.4.2009, 17:46


--------------------
PM MAIL WWW   Вверх
vinter
Дата 24.4.2009, 19:10 (ссылка)    | (голосов:4) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: 13
Всего: 56



mes, надоело тратить время на словоблудие с тобой, оставайся при своем мнении. Ляпнешь где нибудь в будущем при умных людях, будет стыдно.


--------------------
Мой блог
PM MAIL WWW   Вверх
Cheloveck
Дата 24.4.2009, 19:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1578
Регистрация: 26.7.2008
Где: Тула

Репутация: 3
Всего: 32



стараюсь юзать и ту и другую, и ещё
Код

int foo() const;

такую. Может функционала оно не дабавляет, зато вносит ясность в код, что функция (метод) может делать, а что - нет.


--------------------
user posted image
PM Jabber   Вверх
mes
Дата 24.4.2009, 19:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(vinter @  24.4.2009,  18:10 Найти цитируемый пост)
Ляпнешь где нибудь в будущем при умных людях, будет стыдно. 

Т.е. по Вашему тут на форуме умных нет ?!  smile 

Цитата(vinter @  24.4.2009,  18:10 Найти цитируемый пост)
надоело тратить время на словоблудие с тобой, оставайся при своем мнении. 

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


Это сообщение отредактировал(а) mes - 24.4.2009, 19:53


--------------------
PM MAIL WWW   Вверх
J0ker
Дата 24.4.2009, 20:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 986
Регистрация: 17.9.2008

Репутация: 4
Всего: 14



vinter, 
http://www.google.com/search?hl=en&rls...n%27s+interface
"A function's interface consists of the function's name, its return type, the number and types of its arguments, and the types of exceptions it may throw."
и т.п.


--------------------
user posted image
PM MAIL   Вверх
Wolf
Дата 28.4.2009, 12:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 90
Регистрация: 9.6.2006
Где: Нижневартовск

Репутация: нет
Всего: нет



я пользуюсь и
Код

const int i = 123;

и
пользуюсь
Код

const int *const ii = i;

и пользуюсь 
Код

int Abc(const int *const i) const


 smile  Но, иногда забываю. Обычно в спешке забываю.

PM MAIL ICQ   Вверх
baldina
Дата 29.4.2009, 00:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 32
Всего: 101



не пользуюсь.
там, где семантика именно такова, я бы, наверно воспользовался
Код

const int i = GetValue();

но что-то не припоминаю реальных случаев, где это применялось или могло примениться, что бы сделать код понятнее.

Код

void foo (const int x);

считаю странным ибо это то же самое что и int x. Кто-то об этом упомянул, наверняка UnrealMan как знаток стандарта.

и вообще...
любители подобных конструкций, приведите плиз понятные реальные примеры, где это _действительно_ полезно.
PM MAIL   Вверх
Alek86
Дата 29.4.2009, 07:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1299
Регистрация: 30.1.2007
Где: Киев

Репутация: 21
Всего: 25



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

Это сообщение отредактировал(а) Alek86 - 29.4.2009, 07:49


--------------------
user posted image    user posted image
PM MAIL   Вверх
mes
Дата 29.4.2009, 08:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(Alek86 @  29.4.2009,  06:48 Найти цитируемый пост)
если у тебя никогда не бывало багов из-за того, что ты менял переменную, менять которую было нельзя, то тебе эта конструкция не нужна

а я все таки склонясь, что в вышеупомянутых случаях предназначение const не столько для избежания багов,
сколько именно для документированности и чистоты кода. 




--------------------
PM MAIL WWW   Вверх
Любитель
Дата 29.4.2009, 11:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 24
Всего: 92



Цитата(mes @  29.4.2009,  08:44 Найти цитируемый пост)
сколько именно для документированности и чистоты кода. 

 smile 


--------------------
PM MAIL ICQ Skype   Вверх
baldina
Дата 29.4.2009, 14:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 32
Всего: 101



я так понимаю, что реальных примеров нет ни у кого, только абстрактные рассуждения...
PM MAIL   Вверх
Irdis
Дата 30.4.2009, 02:17 (ссылка)    | (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 108
Регистрация: 21.5.2008

Репутация: нет
Всего: 1



имхо. бред smile 
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1522 ]   [ Использовано запросов: 24 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.