Здравствуйте, jazzer, Вы писали:
J>Здравствуйте, Qbit86, Вы писали:
Q>>Разумеется, за высокую квалификацию участников сообщества и выдающееся качество статей.
J>Ну не только, не только за это. J>Еще за вот это: J>
J>Доступ к публикации ограничен
J>Вы пытаетесь открыть страницу, доступную только подписчикам блога «C++».
J>
Вроде бы уже проблему можно решить — есть read-only регистрация.
А как, по твоему, верно?
бчычно, под "константный указатель" в С++ понимают не указатель, который нельзя менять, а указатель, при доступе через который нелзя менять указуемое.
То есть "константный указатель, на неконстантный объект" это что-то вроде:
foo object;
const foo* pointer = &object;
аналогичная терминология используется и в случае "константных ссылок", кстати
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, solid_snake, Вы писали:
_>Здравствуйте, Qbit86, Вы писали:
Q>>[q] Q>>Константный указатель на неконстантный объект это:
Q>>26.52% Q>>(148) Foo *const foo
Q>>41.04% Q>>(229) const Foo *foo
_>Вот поэтому я и бросил C++.
Здравствуйте, Erop, Вы писали:
E>бчычно, под "константный указатель" в С++ понимают не указатель, который нельзя менять, а указатель, при доступе через который нелзя менять указуемое.
А как тогда называют указатель, который нельзя менять?
E>бчычно, под "константный указатель" в С++ понимают не указатель, который нельзя менять, а указатель, при доступе через который нелзя менять указуемое.
Когда говорят не просто «указатель», а «указатель на» — становится понятно, что работает нормальная семантика.
E>аналогичная терминология используется и в случае "константных ссылок", кстати ;)
И итераторов, например, const_iterator. Поэтому я тоже говорю «итератор на константу» вместо «константный итератор», не говоря уже про «ссылку на константу».
E>А как, по твоему, верно? E>бчычно, под "константный указатель" в С++ понимают не указатель, который нельзя менять, а указатель, при доступе через который нелзя менять указуемое.
E>То есть "константный указатель, на неконстантный объект" это что-то вроде:
E>foo object;
E>const foo* pointer = &object;
E>аналогичная терминология используется и в случае "константных ссылок", кстати
нет же
говорят как раз "(не)константный указатель на (не)константный объект"
а про ссылку такого нельзя сказать только потому, что ссылка — всегда константна по своей сути (инициализируется один раз и не может измениться)
поэтому "(не)константная ссылка" == "константная ссылка на (не)константный объект"
Здравствуйте, Erop, Вы писали:
E>бчычно, под "константный указатель" в С++ понимают не указатель, который нельзя менять, а указатель, при доступе через который нелзя менять указуемое.
fail.
E>То есть "константный указатель, на неконстантный объект" это что-то вроде:
E>foo object;
E>const foo* pointer = &object;
fail.
E>аналогичная терминология используется и в случае "константных ссылок", кстати
нифига она не аналогичная. ссылка по определению всегда константна, поэтому "константная ссылка" это всегда ссылка на константу, указатель же в отношении собственной константности вариативен, поэтому "константный указатель" это именно константный указатель. И да, в любом букваре по С++ это разжевывается.
p.s. хабрахабр это детское уг., статьи уровня xakep.ru
Здравствуйте, Qbit86, Вы писали:
Q>А как тогда называют указатель, который нельзя менять?
Ну, например, так и называют. Но указатель -- это это же значение, а не объект с какиими-тто состояниями. В каком-то смысле никакой указатель нельзя менть, так же, как и число пять нельзя менять, например...
Q>Когда говорят не просто «указатель», а «указатель на» — становится понятно, что работает нормальная семантика.
Мне не понятно. Мне вообще не ясно, зачем С++ описывать конструкциями на русском, а не на С++...
Но сложившаяся терминология -- это то, что константный указатель -- это указатель на объект, через который нет модифицирующего доступа к указуемому...
и да, под "указатель" обычно понимают значение, а не переменную...
Q>И итераторов, например, const_iterator. Поэтому я тоже говорю «итератор на константу» вместо «константный итератор», не говоря уже про «ссылку на константу».
Зачем? говори сразу на С++.
В любом случае юзать терминологогия, которую не все понимают одинаково -- себе дороже.
Кстати, помогите моему склерозу. Разве константная ссылка -- это не термин из стандарта?
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, Qbit86, Вы писали:
Q>И итераторов, например, const_iterator. Поэтому я тоже говорю «итератор на константу»
Всё равно не понятно, зачем юзать необщепринятую терминологию, но если уж юзаешь, то почему "... на константу" а не "итератор констант"?
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
E>нет же E>говорят как раз "(не)константный указатель на (не)константный объект" E>а про ссылку такого нельзя сказать только потому, что ссылка — всегда константна по своей сути (инициализируется один раз и не может измениться) E>поэтому "(не)константная ссылка" == "константная ссылка на (не)константный объект"
Это очен неудобно и запутанно, так как указатель, например, может быть умным. Или итератором или ещё чем. И если у тебя "константный итероатор элементов вектора" и "константный указатель на элемент вектора" обозначают разное, то это верный путь в никуда...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, Хвост, Вы писали:
Х>нифига она не аналогичная. ссылка по определению всегда константна, поэтому "константная ссылка" это всегда ссылка на константу, указатель же в отношении собственной константности вариативен, поэтому "константный указатель" это именно константный указатель.
Как интересно. Расскажи теперь, пожалуйста, про отличия std::vector<T>::const_iterator и const T*
Х>И да, в любом букваре по С++ это разжевывается.
Советую перейти от букварей к стандарту языка. В принципе тоже можно к любому из...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, о_О, Вы писали:
Q>>Это же закрытое сообщество элитных айтишников!
о_О>Илитных. fixed.
Да, я хотел было прибегнуть к этому эрративу, но решил, что это придаст несколько неподходящий оттенок исходному посланию. Тогда уж ойтишнегов, как и хацкеров.
Здравствуйте, Erop, Вы писали:
E>Расскажи теперь, пожалуйста, про отличия std::vector<T>::const_iterator и const T* ;) :beer:
Это как раз одна из причин, почему я пишу const суффиксом: «T const *» вместо эквивалентного «const T*». В этом случае фрагменты «const <pointer>» и «const_iterator» смотрятся единообразно и читаются справа налево при переводе с языка C++ на язык естественный.
Здравствуйте, Qbit86, Вы писали:
E>>Расскажи теперь, пожалуйста, про отличия std::vector<T>::const_iterator и const T*
Q>Это как раз одна из причин, почему я пишу const суффиксом: «T const *» вместо эквивалентного «const T*». В этом случае фрагменты «const <pointer>» и «const_iterator» смотрятся единообразно и читаются справа налево при переводе с языка C++ на язык естественный.
Так что там у теюя выходит? const_iterator -- неконстантный, или T const*, таки константный? Или между ними есть какая-то принципиальная разница в семантике?
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, Erop, Вы писали:
E>Но указатель -- это это же значение, а не объект с какиими-тто состояниями. В каком-то смысле никакой указатель нельзя менть, так же, как и число пять нельзя менять, например...
В каком таком «каком-то» смысле указатель нельзя менять? Был, например, (неконстантный) указатель со значением адреса 0xA1B3C5D4, стал указателем со значением 0xB2C4D6E7. Число пять — литерал, это вообще rvalue.
E>Кстати, помогите моему склерозу. Разве константная ссылка -- это не термин из стандарта?
Константная ссылка разночтений не вызывает. Но я всё равно называю её ссылкой на константу.
Здравствуйте, Erop, Вы писали:
E>Так что там у теюя выходит? const_iterator -- неконстантный, или T const*, таки константный? Или между ними есть какая-то принципиальная разница в семантике? ;)
Использую такую нотацию, которая допускает чтение справа налево.
const_iterator — неконстантный итератор на константу.
const_iterator const — константный итератор на константу.
const const_iterator — тоже константный итератор на константу (не использую такую нотацию).
T const* — неконстантный указатель на константу.
const T* — тоже неконстантный указатель на константу (не использую такую нотацию).
T* const — константный указатель на неконстанту.
Здравствуйте, Qbit86, Вы писали:
Q>В каком таком «каком-то» смысле указатель нельзя менять? Был, например, (неконстантный) указатель со значением адреса 0xA1B3C5D4, стал указателем со значением 0xB2C4D6E7. Число пять — литерал, это вообще rvalue.
Обычно, кога говорят "число", то имеют в виду не числовую переменную, сожержащую какое-то значение, а само значение -- число. С указателями есть аналогичная традиция.
Соответственно указатель 0xA1B3C5D4 тоже нельзя поменять, можно поменять занчение переменной, хранящей указатель.
Вообще, чаще всего тип переменных надо называть, когда это либо формальный параметр функции, либо тип возвращаемого значения. реже, когда это поле, и совсем редко нужен тип просто автоматической переменной.
Я так думаю, что терминология идёт из этого обстоятельства.
Q>Константная ссылка разночтений не вызывает. Но я всё равно называю её ссылкой на константу.
Это последовательно, но не общепринято...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, Qbit86, Вы писали:
Q>const_iterator — неконстантный итератор на константу.
А если по-английски общаешься? Неужели не cont iterator называешь?
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, Qbit86, Вы писали:
Q>Константный указатель на неконстантный объект это:
Q>Foo *const foo Q>const Foo *foo
Мне кажется здесь семантический оверхед на квадратный сантиметр букв и на человеческом языке и на языке программирования. Шаблон программирования "го-дипер". А какие проблемы решает эта конструкция, на сколько часто встречается такая конструкция, есть ли смысл заострять на этом внимание?
Здравствуйте, о_О, Вы писали:
о_О>я смотрю ты тоже голосовал...
Я на ваш хабр не хожу...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, Erop, Вы писали:
Q>>const_iterator — неконстантный итератор на константу. E>А если по-английски общаешься? Неужели не cont iterator называешь? :???:
По-английски я на тему C++ не общаюсь. Но, наверное, называл бы iterator to const. Даже если это непривычно адресату, он вряд ли перепутает.
Здравствуйте, fin_81, Вы писали:
f> Мне кажется здесь семантический оверхед на квадратный сантиметр букв и на человеческом языке и на языке программирования. Шаблон программирования "го-дипер". А какие проблемы решает эта конструкция, на сколько часто встречается такая конструкция, есть ли смысл заострять на этом внимание?
Встречается повсеместно. Оверхед в сравнении с более современными языками может и есть, но это здесь не играет роли.
Здравствуйте, fin_81, Вы писали:
Q>>Константный указатель на неконстантный объект это:
Q>>Foo *const foo Q>>const Foo *foo
_>А какие проблемы решает эта конструкция,
Позволяет ясно декларировать намерения автора кода.
_>на сколько часто встречается такая конструкция,
часто. Вот, специально для вас, строчка из проекта:
const boost::shared_ptr<const Alerts>&
_>есть ли смысл заострять на этом внимание?
Рассмотрим запись a->b
Известно, что если на вечеринке rsdn вы назовёте стрелочкой этот модификатор доступа к члену класса, то все на несколько секунд замолкнут и уставятся на вас, а кто-то в углу комнаты уронит бокал...
Здравствуйте, wander, Вы писали:
W>Встречается повсеместно. Оверхед в сравнении с более современными языками может и есть, но это здесь не играет роли.
Константный указатель (*const) часто встречается? Не верю. И этот опрос на хабре это подтверждает. Если и встречается, то эту конструкцию не понимают, а те кто понимает, то старается не использовать, чтобы не вводить в ступор своих коллег. Ссылки более понятны (семантически менее перегружены), покрывают практически весь функционал константных указателей, кроме NULL.
Если рассматривать чистый си, то там еще большие проблемы с const, особенно при работе со стандартными библиотеками, которые в основном решаются путем игнорирования или принудительного снятия константности.
И вообще const похожа целую философию, которую пытались перенять из функционального программирования. И как то она плохо вяжется с присваиванием переменных.
Здравствуйте, Философ, Вы писали:
>>Константный указатель на неконстантный объект ...
Ф>//...инкапсулирующий неконстантный указатель на константный объект....
Ф>ТЬФУ! Ф>ГАДОСТЬ!
Ф>Это одна из причин того, что я всегда недолюбливал C++...
Здравствуйте, fin_81, Вы писали:
W>>Встречается повсеместно. Оверхед в сравнении с более современными языками может и есть, но это здесь не играет роли.
_>Константный указатель (*const) часто встречается? Не верю.
Поиск в проекте строки "* const " даёт 69 результатов для 790 файлов
Поиск в проекте строки "*const" даёт 763 результата в одном из файлов (больше нигде не встречается).
Всего в проекте 295163 строк.
Поиск по строке "class " выдаёт 1968 результатов.
Мда, действительно не часто. Оно и понятно. Делать указатель константным всё равно, что писать const перед интом в параметре функции:
Здравствуйте, Abyx, Вы писали:
A>Здравствуйте, Философ, Вы писали:
>>>Константный указатель на неконстантный объект ...
Ф>>//...инкапсулирующий неконстантный указатель на константный объект....
Ф>>ТЬФУ! Ф>>ГАДОСТЬ!
Ф>>Это одна из причин того, что я всегда недолюбливал C++...
A>да Вы просто ниасилили.
Осилил, помогли осилить, а что-то и заставили осилить. Однако...
Всё сказанное выше — личное мнение, если не указано обратное.
On 02/01/2012 11:57 AM, Erop wrote:
> аналогичная терминология используется и в случае "константных ссылок", кстати
Аналогичной она не может быть в принципе, поскольку ссылка -- это константный,
автоматически разименуемый компилятором указатель, поэтому константностью
может в случае ссылки обладать только то, на что ссылка ссылается.
Там хоть как говори -- не запутаешься.
> Это как раз одна из причин, почему я пишу const суффиксом: «T const *» вместо > эквивалентного «const T*». В этом случае фрагменты «const <pointer>» и > «const_iterator» смотрятся единообразно и читаются справа налево при переводе с > языка C++ на язык естественный.
А я всегда пишу " const T* " и " const T& ", потому что для меня С++ --
естественный.
Здравствуйте, B0FEE664, Вы писали:
_>>на сколько часто встречается такая конструкция,
BFE>часто. Вот, специально для вас, строчка из проекта: BFE>const boost::shared_ptr<const Alerts>&
shared_ptr — это не только указатель (но и 3-4 кг диетического мяса), это управление владением/жизнью указываемого объекта, это логика поверх указателя.
Откуда эта строчка? Из объявления функции? Если да, то зачем эта обертка из shared_ptr? Не проще ли передать только {const Alerts&}? Можно больше контекста, чтобы понять осмысленность или бессмысленность этой конструкции?
[offtop]
Или вам нравится заострять внимание на "->" при любом удобном и не удобном случае? Говорят у кого чего болит, тот о том и говорит. Может следует сходит к тому кто может снять эту боль?
[/offtop]
Здравствуйте, LuciferSingapore, Вы писали:
LS>0xA1B3C5D4 это не "указатель", а адрес. Указатель — это переменная, которая его хранит.
Почему переменная, а не знаение?
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, Erop, Вы писали:
E>Здравствуйте, LuciferSingapore, Вы писали:
LS>>0xA1B3C5D4 это не "указатель", а адрес. Указатель — это переменная, которая его хранит.
E>Почему переменная, а не знаение?
Ну это как указатель на столбе, сейчас он показывает на один адрес, а можно его взять и повернуть, и он будет показывать на другой.
Здравствуйте, fin_81, Вы писали:
_>>>на сколько часто встречается такая конструкция, BFE>>часто. Вот, специально для вас, строчка из проекта: BFE>>const boost::shared_ptr<const Alerts>&
_>shared_ptr — это не только указатель (но и 3-4 кг диетического мяса), это управление владением/жизнью указываемого объекта, это логика поверх указателя. _>Откуда эта строчка? Из объявления функции?
да.
_> Если да, то зачем эта обертка из shared_ptr?
Alerts заказаны по new. Хранятся в одном из объектов. Могут быть созданы в другой нитке и переданы в этот объект навечно (время жизни до 4-x секунд).
_> Не проще ли передать только {const Alerts&}?
Проще-то оно может и проще, но надо обосновать.
Alerts хранятся как boost::shared_ptr<Alerts> в одном из объектов.
Alerts Могут быть NULL
Передаются в функцию объекта, которая не должна менять Alerts.
Теоретически этот объект может "захотеть" сохранить переданный параметр (с правами только на чтение) на некоторое время.
Кто первый из двух объектов хранящих указатель на Alerts будет уничтожен — не известно.
_> Можно больше контекста, чтобы понять осмысленность или бессмысленность этой конструкции?
_>[offtop] _>Или вам нравится заострять внимание на "->" при любом удобном и не удобном случае? Говорят у кого чего болит, тот о том и говорит. Может следует сходит к тому кто может снять эту боль? _>[/offtop]
Это переделанная шутка из какой-то книжки по программированию. Если не ошибаюсь, то про умные и гениальные указатели и их грани...
Здравствуйте, Erop, Вы писали:
LS>>0xA1B3C5D4 это не "указатель", а адрес. Указатель — это переменная, которая его хранит. E>Почему переменная, а не знаение?
По определению. Хоть вики возьми "Указатель (поинтер, англ. pointer) — переменная, диапазон значений которой состоит из адресов ячеек памяти и специального значения — нулевого адреса.".
Или ты так, потроллить просто?
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Здравствуйте, B0FEE664, Вы писали:
_>> Не проще ли передать только {const Alerts&}? BFE>Проще-то оно может и проще, но надо обосновать. BFE>Alerts хранятся как boost::shared_ptr<Alerts> в одном из объектов.
Не мешает передавать как const T&
BFE>Alerts Могут быть NULL
ну тогда const T*, но не const T * const. Пока не вижу смысла в константном указателе.
BFE>Передаются в функцию объекта, которая не должна менять Alerts.
ничего не изменилось.
BFE>Теоретически этот объект может "захотеть" сохранить переданный параметр (с правами только на чтение) на некоторое время. BFE>Кто первый из двух объектов хранящих указатель на Alerts будет уничтожен — не известно.
Так теоретически или все таки сохраняет? У объекта есть поле типа boost::shared_ptr<Alerts>?
И вообще странно, смотрится "константная ссылка на умный указатель", полный го-дипер . Здравый смысл подсказывает стараться избегать таких конструкций.
Здравствуйте, MasterZiv, Вы писали:
MZ> On 02/01/2012 08:44 AM, Qbit86 wrote:
MZ> > Разумеется, за высокую квалификацию участников сообщества и выдающееся качество MZ> > статей.
MZ> А я лично люблю его совсем за другое, вот за это: MZ> -----------------------------------------------------
MZ> -----------------------------------------------------
MZ> Ну так и пусть их себе там варятся...
И что? регистрация 3 минуты занимает. В режиме read-only. Большинство блогов доступы без нее. Люблю хабр :P
Здравствуйте, fin_81, Вы писали:
_>>> Не проще ли передать только {const Alerts&}? BFE>>Проще-то оно может и проще, но надо обосновать. BFE>>Alerts хранятся как boost::shared_ptr<Alerts> в одном из объектов. _>Не мешает передавать как const T&
BFE>>Alerts Могут быть NULL _>ну тогда const T*, но не const T * const. Пока не вижу смысла в константном указателе.
Как это не поменялось? Теперь мы не знаем, когда T уничтожать
BFE>>Теоретически этот объект может "захотеть" сохранить переданный параметр (с правами только на чтение) на некоторое время. BFE>>Кто первый из двух объектов хранящих указатель на Alerts будет уничтожен — не известно. _>Так теоретически или все таки сохраняет? У объекта есть поле типа boost::shared_ptr<Alerts>?
В данном конкретном случае — теоретически. Но в других проектах я использовал коллекции умных указателей для кеширования данных. И вообще — это обычное дело, когда владельцы shared_ptr не знают о друг друге.
_>И вообще странно, смотрится "константная ссылка на умный указатель", полный го-дипер . Здравый смысл подсказывает стараться избегать таких конструкций.
Если сделать
typedef boost::shared_ptr<Alerts> SharedAlerts;
то запись
const SharedAlerts&
то запись не будет казаться чем-то странным.
Здравствуйте, B0FEE664, Вы писали:
BFE>>>Alerts Могут быть NULL _>>ну тогда const T*, но не const T * const. Пока не вижу смысла в константном указателе.
BFE>Как это не поменялось? Теперь мы не знаем, когда T уничтожать
Если в этом методе не сохраняешь в полях объекта этот умный указатель, то с жизнью/владением объекта управляет вызывающий код, а в этом методе эта дополнительная логика и этот "го-дипер" пока не нужен.
_>>Так теоретически или все таки сохраняет? У объекта есть поле типа boost::shared_ptr<Alerts>?
BFE>В данном конкретном случае — теоретически. Но в других проектах я использовал коллекции умных указателей для кеширования данных. И вообще — это обычное дело, когда владельцы shared_ptr не знают о друг друге.
То есть в данном случае shared_prt избыточен и по количеству символов в объявлении функции, и по смысловой нагрузке.
На счет кеша, жизнью объектов кеша обычно управляет сам кеш, в соответствии с ограничениями по времени и/или по памяти (и тп), а не запрашивающий данные объект, то есть хранить shared_ptr в объекте для информации лежащей в кеше — это нарваться на нарушение ограничений кеша. Разве что weak_ptr с проверкой на валидность и перезапросом тех же данных.
_>>И вообще странно, смотрится "константная ссылка на умный указатель", полный го-дипер . Здравый смысл подсказывает стараться избегать таких конструкций. BFE>Если сделать BFE>typedef boost::shared_ptr<Alerts> SharedAlerts; BFE>то запись BFE>const SharedAlerts& BFE>то запись не будет казаться чем-то странным.
Бритва Оккама "не плоди сущности без необходимости".
Q>И итераторов, например, const_iterator. Поэтому я тоже говорю «итератор на константу» вместо «константный итератор», не говоря уже про «ссылку на константу».
а чем отличается "ссылка на константу" от "константа на ссылку" ?
americans fought a war for a freedom. another one to end slavery. so, what do some of them choose to do with their freedom? become slaves.
Q>Эпик фейспалм. Где моя жидкость для розжига межресурсовой ненависти.
более десяти лет писал несколько больших и маленких проектов на си++, ни разу не использовал константные указатели на неконстантные обьекты. У меня есть смутные сомнения, что квалификация программиста не меряется знанием такой замороченной сишной мути.
G>более десяти лет писал несколько больших и маленких проектов на си++, ни разу не использовал константные указатели на неконстантные обьекты. У меня есть смутные сомнения, что квалификация программиста не меряется знанием такой замороченной сишной мути.
концепция проста как паренная репа (а вовсе и не муть), а вот синтаксис ужасен, и по нему действительно ничего нельзя мерить
Здравствуйте, ., Вы писали:
.>По определению. Хоть вики возьми "Указатель (поинтер, англ. pointer) — переменная, диапазон значений которой состоит из адресов ячеек памяти и специального значения — нулевого адреса.".
Прикольно. А как ты понимаешь себе тогда "множество указателей", например (в смысле std::set<T*>)?
Ещё интересно, поинмаешь ли ты "число", как переменную, которая содержит число? Можно ли сказать, что функция malloc возвращает указатель? И если да, то не затрудни ли тебя указать что там за переменная имеется в виду?
.>Или ты так, потроллить просто?
Часть "совсем не потроллить" закончилась на словах о том, что я не понимаю, зачем описывать С++ конструкции русским языком, а не использовать их сами по себе...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, squid, Вы писали:
S>И что? регистрация 3 минуты занимает. В режиме read-only. Большинство блогов доступы без нее. Люблю хабр :P
Не-не-не, регистраию ещё надо залужить. И не пускать меня любимого -- это довольно плохая стратегия склонить меня к регистрации на их говноресурсе
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, Erop, Вы писали:
E>Как интересно. Расскажи теперь, пожалуйста, про отличия std::vector<T>::const_iterator и const T*
std::vector<T>::const_iterator — это объект-итератор частично повторяющий поведение указателя константный объект типа T, const T* — это указатель на константный объект типа T. Больше в букваре написано
Здравствуйте, Erop, Вы писали:
E>Так что там у теюя выходит? const_iterator -- неконстантный, или T const*, таки константный? Или между ними есть какая-то принципиальная разница в семантике?
Ну например:
std::vector<int>::const_iterator i;
const int* j = i; // Error!const int* j = &*i; // Okconst int* k = j; // Ok
i = k; // Error!
j = k; // Ok
Еще раз: const_iterator — это объект, а T const* — это указатель
Здравствуйте, goondick, Вы писали:
G>более десяти лет писал несколько больших и маленких проектов на си++, ни разу не использовал константные указатели на неконстантные обьекты. У меня есть смутные сомнения, что квалификация программиста не меряется знанием такой замороченной сишной мути.
Это не муть, а элементарное удобство, которое потенциально позволит придушить баг в зародыше:
char* const buffer_begin = ...; // Константный указатель на начало буфера. Содержимое буфера можно изменить, сдвинуть нечаянно сам указатель - нет
Здравствуйте, 11molniev, Вы писали:
1>Ну не знаю. Голосавания и статьи там бред конечно, но вот коменты читать очень весело. Поднимает настроение. 1>Так что мой любимый сайт для отдыха))))
Нравится смотреть как школьники какашками бросаются?
Здравствуйте, MTD, Вы писали:
1>>Ну не знаю. Голосавания и статьи там бред конечно, но вот коменты читать очень весело. Поднимает настроение. MTD>Нравится смотреть как школьники какашками бросаются? :xz:
Будет вам. Ну откуда же ещё, как не из этого замечательного ресурса, мы узнаем, как студенты-первокуры решают свои лабы по информатике, или, например, что думают по поводу авторского права их более молодые товарищи?
Здравствуйте, MTD, Вы писали:
MTD>Здравствуйте, мыщъх, Вы писали:
М>>а чем отличается "ссылка на константу"
MTD>Тем, что так бывает.
М>>от "константа на ссылку" ?
MTD>А так нет.
а давайте добавим это в язык и тогда будет
americans fought a war for a freedom. another one to end slavery. so, what do some of them choose to do with their freedom? become slaves.
Здравствуйте, MTD, Вы писали:
MTD>std::vector<T>::const_iterator — это объект-итератор частично повторяющий поведение указателя константный объект типа T, const T* — это указатель на константный объект типа T. Больше в букваре написано
Ну ты const_iterator как называешь-то? Особенно если по-английски общаешься? "Constant iterator" or "iterator of constants"?
И как по-русски?..
Я вот ни разу не встречал, чтобы были разночтения. "Константный итератор" -- это всегда итератор, который не позволяет менять данные к которым даёт доступ, и никак иначе. Надеюсь в твоём окружении ситуация в точности такая же. И если это так, то в чём разница между указателями и итераторами?
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, MTD, Вы писали:
MTD>Еще раз: const_iterator — это объект, а T const* — это указатель
Трудно тебе, наверное программировать-то в команде. Или ты фрилансер?
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, Erop, Вы писали:
E>Ну ты const_iterator как называешь-то? Особенно если по-английски общаешься? "Constant iterator" or "iterator of constants"?
Дословно, то есть std const iterator. Название не самое удачное, согласен.
E>И как по-русски?..
Здравствуйте, Erop, Вы писали:
E>Здравствуйте, MTD, Вы писали:
MTD>>Еще раз: const_iterator — это объект, а T const* — это указатель
E>Трудно тебе, наверное программировать-то в команде.
Здравствуйте, MTD, Вы писали:
MTD>Дословно, то есть std const iterator. Название не самое удачное, согласен.
О! я тоже против использования описательной терминологии! Но тут спор за то, что типа "константный указатель" -- это не указатель, который не даёт менять указуемое, а указатель, который нельзя менять сам по себе.
Я сослался на то, что со сылками всё определено вообще в стандарте, но оппоненты высказали довод, что ссылку менять всё равно нельзя, в отличии от указателя. Тогда я предложил объяснить мне, почему в итераторах константный итератор -- это тоже итератр, который не даёт менять итерируемые объекты, а вовсе и не итератор, который нелья итерировать...
В общем флейм.
E>>И как по-русски?..
MTD>Стд конст итератор
А почему стд, а не вектор?
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Q>Будет вам. Ну откуда же ещё, как не из этого замечательного ресурса, мы узнаем, как студенты-первокуры решают свои лабы по информатике, или, например, что думают по поводу авторского права их более молодые товарищи?
Здравствуйте, Eye of Hell, Вы писали:
Q>>Будет вам. Ну откуда же ещё, как не из этого замечательного ресурса, мы узнаем, как студенты-первокуры решают свои лабы по информатике, или, например, что думают по поводу авторского права их более молодые товарищи?
EOH>http://habrahabr.ru/blogs/cpp/54762/ EOH>Это похоже на лабу по информатике? Или цикл статей про статический анализ C++?
Все эти вещи затеряются в потоке постов про придумывание паролей и лажовые бенчмарки, как слёзы в каплях дождя.
char* const buffer_begin = ...; // Константный указатель на начало буфера. Содержимое буфера можно изменить, сдвинуть нечаянно сам указатель - нет
Хороший пример, но тоже редко встречающийся. Тут проблема путаницы понятий "объект-вуфер" и "объект-итератор" (указатель на начало). Это проблема самого языка и его базовых типов, проблема несовместимости абстракций языка и абстракций предметной области.
G>>более десяти лет писал несколько больших и маленких проектов на си++, ни разу не использовал константные указатели на неконстантные обьекты. У меня есть смутные сомнения, что квалификация программиста не меряется знанием такой замороченной сишной мути.
MTD>Это не муть, а элементарное удобство, которое потенциально позволит придушить баг в зародыше:
MTD>
MTD>char* const buffer_begin = ...; // Константный указатель на начало буфера. Содержимое буфера можно изменить, сдвинуть нечаянно сам указатель - нет
MTD>
Только одному мне кажется, что это не удобство, а костыль?
Здравствуйте, Eye of Hell, Вы писали:
Q>>Будет вам. Ну откуда же ещё, как не из этого замечательного ресурса, мы узнаем, как студенты-первокуры решают свои лабы по информатике, или, например, что думают по поводу авторского права их более молодые товарищи?
EOH>http://habrahabr.ru/blogs/cpp/54762/
EOH>Это похоже на лабу по информатике? Или цикл статей про статический анализ C++?
Здравствуйте, Erop, Вы писали:
E> S>И что? регистрация 3 минуты занимает. В режиме read-only. Большинство блогов доступы без нее. Люблю хабр :P
E> Не-не-не, регистраию ещё надо залужить. И не пускать меня любимого -- это довольно плохая стратегия склонить меня к регистрации на их говноресурсе
Для того чтобы писать и комментировать — да. Чтобы читать — просто регистрация. Последние месяца 3.
Здравствуйте, fin_81, Вы писали:
BFE>>>>Alerts Могут быть NULL _>>>ну тогда const T*, но не const T * const. Пока не вижу смысла в константном указателе. BFE>>Как это не поменялось? Теперь мы не знаем, когда T уничтожать _>Если в этом методе не сохраняешь в полях объекта этот умный указатель, то с жизнью/владением объекта управляет вызывающий код, а в этом методе эта дополнительная логика и этот "го-дипер" пока не нужен.
На самом деле всё наоборот. Если я вижу у функции простой указатель, вроде foo(const T* p) — то вот это настоящий "го-дипер", потому, что совершенно необходимо точно раскопать — кто же владеет этим объектом и кто его должен уничтожать. А если ещё foo — это виртуальный метод, то предстоит полный анализ всех вызовов и всех реализаций данной функции с целью найти возможную утечку. И эти раскопки aka "го-дипер" могут сопровождаться с необходимостью понять всю логику жизни всех объектов, кто вызывает и тех у кого вызывают данный метод. Видя же видя же shared_ptr ничего такого делать не нужно.
_>>>Так теоретически или все таки сохраняет? У объекта есть поле типа boost::shared_ptr<Alerts>? BFE>>В данном конкретном случае — теоретически. Но в других проектах я использовал коллекции умных указателей для кеширования данных. И вообще — это обычное дело, когда владельцы shared_ptr не знают о друг друге. _>То есть в данном случае shared_prt избыточен и по количеству символов в объявлении функции, и по смысловой нагрузке.
Про смысловую нагрузку я уже написал, а на счёт символов — на данном этапе развития техники нам нужно экономить время, а не пространство.
_>На счет кеша, жизнью объектов кеша обычно управляет сам кеш, в соответствии с ограничениями по времени и/или по памяти (и тп), а не запрашивающий данные объект, то есть хранить shared_ptr в объекте для информации лежащей в кеше — это нарваться на нарушение ограничений кеша. Разве что weak_ptr с проверкой на валидность и перезапросом тех же данных.
Я говорю про кэш результатов, а не данных. Это всё меняет.
_>Бритва Оккама "не плоди сущности без необходимости".
Для меня в данном контексте это звучит, как "не пользуйтесь столовыми приборами во время еды".
Мы же не анализ причин и поиском истыны занимаемся во время программирования, а создаём лишние сущности — последовательности байт.
Здравствуйте, Eye of Hell, Вы писали:
EOH>http://habrahabr.ru/blogs/cpp/54762/ EOH>Это похоже на лабу по информатике?
Ну не rocket science жеж.
EOH>Или цикл статей про статический анализ C++?
Ты про рекламу PVS Studio?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, Eye of Hell, Вы писали:
Q>>Будет вам. Ну откуда же ещё, как не из этого замечательного ресурса, мы узнаем, как студенты-первокуры решают свои лабы по информатике, или, например, что думают по поводу авторского права их более молодые товарищи?
EOH>http://habrahabr.ru/blogs/cpp/54762/
EOH>Это похоже на лабу по информатике?
Думаешь, на курсовик тянет? Вряд ли...
EOH>Или цикл статей про статический анализ C++?
Цикл статей про статический анализ C++ похож, разумеется, не на лабу, а на наглую рекламу
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
EOH>>http://habrahabr.ru/blogs/cpp/54762/ EOH>>Это похоже на лабу по информатике? Или цикл статей про статический анализ C++? Q>Все эти вещи затеряются в потоке постов про придумывание паролей и лажовые бенчмарки, как слёзы в каплях дождя.
Ну на rsdn.ru тоже не каждый первый пост представляет интерес. Да, хабр более попули... популяри... вообщем на более широкую аудиторию рассчитан, но в целом там не так печально, как многие рассказывают. RSS их читать интересно.
Здравствуйте, Qbit86, Вы писали:
Q>И итераторов, например, const_iterator. Поэтому я тоже говорю «итератор на константу» вместо «константный итератор», не говоря уже про «ссылку на константу».
«итератор на константу» — это ведь не верно в общем смысле
const_iterator может указывать на неконстантный объект, только вот его изменить через интерфейс const_iterator'a нельзя. Но сам объект от этого константным ведь не становится
Ну так и ресурс рассчитан на более широкую аудиторию, нежели comp.lang.cpp
EOH>>Или цикл статей про статический анализ C++? BBI>Ты про рекламу PVS Studio?
Про нее, родимую. Товарищь довольно интересно пишет, много любопытных моментов. Ключи триальные раздает, опять же.
Re[5]: А я не хочу зависеть от того, в какую сторону у кого
Здравствуйте, squid, Вы писали:
S>Для того чтобы писать и комментировать — да. Чтобы читать — просто регистрация. Последние месяца 3.
Я конечно рад за хаброводов и за сам хабр, но таки ТУТ тема всплыла потому, что статья на которую сослалсь ТС без регистрации НЕ ЧИТАЕТСЯ...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, B0FEE664, Вы писали:
Q>>И итераторов, например, const_iterator. Поэтому я тоже говорю «итератор на константу» вместо «константный итератор», не говоря уже про «ссылку на константу». BFE>«итератор на константу» — это ведь не верно в общем смысле :shuffle: BFE>const_iterator может указывать на неконстантный объект... Но сам объект от этого константным ведь не становится :xz:
Ну так это не только к итераторам относится.
BFE>только вот его изменить через интерфейс const_iterator'a нельзя
Через интерфейс итератора на неконстанту тоже нельзя изменить указуемый объект. Через интерфейс итератор можно разыменовать.
Здравствуйте, Eye of Hell, Вы писали:
EOH>Да, хабр более попули... популяри... вообщем на более широкую аудиторию рассчитан, но в целом там не так печально, как многие рассказывают. RSS их читать интересно.
Всё бы ничего, но часто, не имя на то никаких оснований, считают Хабрахабр достаточно авторитетным источником, чтобы давать ссылки на статьи оттуда в дискуссии. Статьи, рождённые после прочтения через строчку половины главы Рихтера и вольного переосмысления «молодым талантливым автором».
Здравствуйте, B0FEE664, Вы писали:
BFE>На самом деле всё наоборот. Если я вижу у функции простой указатель, вроде foo(const T* p) — то вот это настоящий "го-дипер"
Отвечу на все одним куском.
В том-то и дел что shared_ptr — это не бесконечно_умный_умеющий_читать_мысли_указатель<T>, это не серебряная пуля. Такими темпами вам срочно надо в управляемые среды. Но, говорят, там тоже есть проблемы с памятью, даже WeakReferenc'ы не помогают. Как текло, так и течет. И вообще, слишком далеко ушли от основной темы, я сдаюсь.
Здравствуйте, Erop, Вы писали:
E>Я конечно рад за хаброводов и за сам хабр, но таки ТУТ тема всплыла потому, что статья на которую сослалсь ТС без регистрации НЕ ЧИТАЕТСЯ... :xz:
Здравствуйте, fin_81, Вы писали:
BFE>>На самом деле всё наоборот. Если я вижу у функции простой указатель, вроде foo(const T* p) — то вот это настоящий "го-дипер"
_>Отвечу на все одним куском. _>В том-то и дел что shared_ptr — это не бесконечно_умный_умеющий_читать_мысли_указатель<T>, это не серебряная пуля.
Против утечек — это она самая.
_>Такими темпами вам срочно надо в управляемые среды.
Вот куда мне не надо — дак это туда. В управляемых средах поуправлять вообще не дают.
_>Но, говорят, там тоже есть проблемы с памятью, даже WeakReferenc'ы не помогают. Как текло, так и течет. И вообще, слишком далеко ушли от основной темы, я сдаюсь.
Жаль. Я только подумал, что наверное стоит показать, что такое настоящий "го-дипер"
Q>Всё бы ничего, но часто, не имя на то никаких оснований, считают Хабрахабр достаточно авторитетным источником, чтобы давать ссылки на статьи оттуда в дискуссии. Статьи, рождённые после прочтения через строчку половины главы Рихтера и вольного переосмысления «молодым талантливым автором».
ИМХО вопрос "авторитетности" в IT — он достаточно больной и без хабра. И заслуженные блоггеры-программисты, имеющие за плечами по двадцать лет профильной работы, тоже ошибаются.
Здравствуйте, B0FEE664, Вы писали:
_>>В том-то и дел что shared_ptr — это не бесконечно_умный_умеющий_читать_мысли_указатель<T>, это не серебряная пуля.
BFE>Против утечек — это она самая.
Как решаете проблему циклических ссылок?
_>>Такими темпами вам срочно надо в управляемые среды.
BFE>Вот куда мне не надо — дак это туда. В управляемых средах поуправлять вообще не дают.
_>>Но, говорят, там тоже есть проблемы с памятью, даже WeakReferenc'ы не помогают. Как текло, так и течет. И вообще, слишком далеко ушли от основной темы, я сдаюсь.
BFE>Жаль. Я только подумал, что наверное стоит показать, что такое настоящий "го-дипер"
Настоящий "го-дипер" — это воевать с утечками памяти, когда являешься членом секты "shared_ptr — это серебряная пуля".
Контрольный вопрос: как часто у вас используется weak_ptr?
Все сдаюсь, ни слова про не-очень-то-и-умный shared_ptr.
Здравствуйте, Eye of Hell, Вы писали:
EOH>Ну так и ресурс рассчитан на более широкую аудиторию, нежели comp.lang.cpp
О том и речь.
EOH>Товарищь довольно интересно пишет, много любопытных моментов. Ключи триальные раздает, опять же.
Он тут тоже пробегает иногда.
Статьи их вроде как все есть на их сайте.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, ambel-vlad, Вы писали:
AV>Здравствуйте, мыщъх, Вы писали:
М>>>>от "константа на ссылку" ?
MTD>>>А так нет. М>>а давайте добавим это в язык и тогда будет
AV>давай. изобретаешь свой язык и добавляешь туда.
а чего его изобретать? 69[buf] работает и так
americans fought a war for a freedom. another one to end slavery. so, what do some of them choose to do with their freedom? become slaves.
Здравствуйте, fin_81, Вы писали:
_>>>В том-то и дел что shared_ptr — это не бесконечно_умный_умеющий_читать_мысли_указатель<T>, это не серебряная пуля. BFE>>Против утечек — это она самая.
... BFE>>Жаль. Я только подумал, что наверное стоит показать, что такое настоящий "го-дипер" _>Настоящий "го-дипер" — это воевать с утечками памяти, когда являешься членом секты "shared_ptr — это серебряная пуля".
имея при этом тройную вложенность.
_>Контрольный вопрос: как часто у вас используется weak_ptr?
В текущем проекте — ни разу, в отличии от enable_shared_from_this, который встречается 8 раз
_>Все сдаюсь, ни слова про не-очень-то-и-умный shared_ptr.
Это правда. "Пуля — дура,..."
Здравствуйте, мыщъх, Вы писали:
М>>>>>от "константа на ссылку" ?
MTD>>>>А так нет. М>>>а давайте добавим это в язык и тогда будет
AV>>давай. изобретаешь свой язык и добавляешь туда.
М>а чего его изобретать? 69[buf] работает и так
Ну, таки, это не то, что тебе хотелось ("константа на ссылку").
Здравствуйте, B0FEE664, Вы писали:
BFE>Против утечек — это она самая.
Это пока иклических зависимостей нет...
Серебрянная пуля, тем не менее, есть, только это, скорее, серебрянная атомная бомба
Типа выполняешь запро на отдельном аллокаторе, спасаешь результат на основной, а аллокатор запроса просто ресетишь...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
E>То есть "константный указатель, на неконстантный объект" это что-то вроде:
E>foo object;
E>const foo* pointer = &object;
E>аналогичная терминология используется и в случае "константных ссылок", кстати
И этот человек рассказывал что указатели в С++ это легко
Стадо леммингов не смогло проверить простейший код Я все понимаю, можно перепутать с какой стороны const ставится, но почему у сиплюсников отсутствует привычка проверять код который они пишут ?
Здравствуйте, мыщъх, Вы писали:
Q>>И итераторов, например, const_iterator. Поэтому я тоже говорю «итератор на константу» вместо «константный итератор», не говоря уже про «ссылку на константу».
М>а чем отличается "ссылка на константу" от "константа на ссылку" ?
Здравствуйте, Erop, Вы писали:
E>Здравствуйте, ., Вы писали:
.>>По определению. Хоть вики возьми "Указатель (поинтер, англ. pointer) — переменная, диапазон значений которой состоит из адресов ячеек памяти и специального значения — нулевого адреса.". E>Прикольно. А как ты понимаешь себе тогда "множество указателей", например (в смысле std::set<T*>)? E>Ещё интересно, поинмаешь ли ты "число", как переменную, которая содержит число? Можно ли сказать, что функция malloc возвращает указатель? И если да, то не затрудни ли тебя указать что там за переменная имеется в виду?
Переменная (variable) это то, что может принимать значение (value). Следовательно std::set содержит множество значений. Следовательно переменная содержит значение числа. malloc возвращает значение адреса.
Так что указатель менять можно, а значение адреса — нельзя.
.>>Или ты так, потроллить просто? E>Часть "совсем не потроллить" закончилась на словах о том, что я не понимаю, зачем описывать С++ конструкции русским языком, а не использовать их сами по себе...
Да как обычно — терминологический спор.
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Здравствуйте, ., Вы писали:
.>Так что указатель менять можно, а значение адреса — нельзя.
Ты хочешь сказать, что фраза "функция foo возвращает указатель на void" некорректна и не употребляется?
А если она таки корректна и употребляется, то поясни ещё раз про переменые и значения...
.>Да как обычно — терминологический спор.
Дык может я не понял ТС но вроде вся тема была про терминологию
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
E>>аналогичная терминология используется и в случае "константных ссылок", кстати
I>И этот человек рассказывал что указатели в С++ это легко I>Стадо леммингов не смогло проверить простейший код Я все понимаю, можно перепутать с какой стороны const ставится, но почему у сиплюсников отсутствует привычка проверять код который они пишут ?
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, Erop, Вы писали:
E>Здравствуйте, ., Вы писали:
.>>Так что указатель менять можно, а значение адреса — нельзя. E>Ты хочешь сказать, что фраза "функция foo возвращает указатель на void" некорректна и не употребляется? E>А если она таки корректна и употребляется, то поясни ещё раз про переменые и значения...
Просто, имхо, не совсем точна. Обычно чтобы это значение хоть как-то использовать, его вначале нужно положить в переменную, поэтому неоднозначности в данном случае не вызывает:
void *pointer = malloc(...);
можно сказать, что вернулся указатель.
А если смотреть более точно и детально, то требуется уточнять, и правильно применять термины.
Хотя вру немного. Придётся ещё один термин упомянуть. "Указатель" — ещё и название типа данных. А переменная типа "указатель" тоже называется указателем. В случае с тем что же функция возвращает — описывается в её сигнатуре. malloc возвращает тип данных "указатель".
.>>Да как обычно — терминологический спор. E>Дык может я не понял ТС но вроде вся тема была про терминологию
Флейм, короче говоря.
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Здравствуйте, ., Вы писали:
.>Просто, имхо, не совсем точна. Обычно чтобы это значение хоть как-то использовать, его вначале нужно положить в переменную, поэтому неоднозначности в данном случае не вызывает: .>
.>void *pointer = malloc(...);
.>
.>можно сказать, что вернулся указатель.
Ой, правда что ли?
getMySessionPtr()->CloseSession();
Что, по твоему возвращает getMySessionPtr()? Указатель на сессию, или что-то иное?
.>А если смотреть более точно и детально, то требуется уточнять, и правильно применять термины.
.>Хотя вру немного. Придётся ещё один термин упомянуть. "Указатель" — ещё и название типа данных. А переменная типа "указатель" тоже называется указателем. В случае с тем что же функция возвращает — описывается в её сигнатуре. malloc возвращает тип данных "указатель".
Ну ты как хочешь можешь изворачиваться, но мне лично известна, и предстваляется последовательной и логичной терминология, в которой функция malloc возвращает заначение типа данных указатель, или просто указатель. А функция sin возвращает значение типа число с плавающе точкой, или просто число с плавающей точкой. Так как в случае функции всегда понятно, что она возвращает значение какого-то типа...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, Erop, Вы писали:
E>Ой, правда что ли? E>
getMySessionPtr()->CloseSession();
E>Что, по твоему возвращает getMySessionPtr()? Указатель на сессию, или что-то иное?
Есть такая неявная переменная "this", указатель, как ни странно...
.>>А если смотреть более точно и детально, то требуется уточнять, и правильно применять термины. .>>Хотя вру немного. Придётся ещё один термин упомянуть. "Указатель" — ещё и название типа данных. А переменная типа "указатель" тоже называется указателем. В случае с тем что же функция возвращает — описывается в её сигнатуре. malloc возвращает тип данных "указатель". E>Ну ты как хочешь можешь изворачиваться, но мне лично известна, и предстваляется последовательной и логичной терминология, в которой функция malloc возвращает заначение типа данных указатель, или просто указатель. А функция sin возвращает значение типа число с плавающе точкой, или просто число с плавающей точкой. Так как в случае функции всегда понятно, что она возвращает значение какого-то типа...
Можно конечно так говорить, но до тех пор пока не возникают неоднозначности. Человек пишет "А как тогда называют указатель, который нельзя менять?", а ты "Ну, например, так и называют. Но указатель -- это это же значение". Он имеет в виду понятие "переменная типа указатель" (т.е. "...поименованная, либо адресуемая иным способом область памяти..."), а ты подменяешь понятием "значение типа указатель" (т.е. элемент множества допустимых значений типа данных "указатель", адрес, короче говоря).
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Здравствуйте, ., Вы писали:
.>Есть такая неявная переменная "this", указатель, как ни странно...
Ты тут втирал, что переменная -- это то, куда можно присваивать значения, вроде. Так с какого перепугу эта самая this -- переменная?
Вообще, обычно это какой-то регистр, который ещё и менять нельзя...
.>Можно конечно так говорить, но до тех пор пока не возникают неоднозначности. Человек пишет "А как тогда называют указатель, который нельзя менять?", а ты "Ну, например, так и называют. Но указатель -- это это же значение". Он имеет в виду понятие "переменная типа указатель" (т.е. "...поименованная, либо адресуемая иным способом область памяти..."), а ты подменяешь понятием "значение типа указатель" (т.е. элемент множества допустимых значений типа данных "указатель", адрес, короче говоря).
Ну это просто омонимия. Если мы говорим про переменную типа int, что это число, которое пробегает такие-то значения, то почему мы не можем так же обращаться с указателем или там итератором и т. д.?
А термин "константный указатель" неудачный, конечно же, но так уж сложилось, что термин "константное число" не востребован, и аналогичный термин про указатели тоже не шибко нужен. А вот указатель, который даёт ro доступ к указуемому, так же, как итератор с такими свойствами и т. д. -- востребован. Вот его, AFAIK и называют "константный указатель". Но это безусловно вносит путанницу. Можно ввести себе за правило говорить "указатель на константу", например. Это тоже путает, но меньше.
Тем не менее я наблюдаю вокруг себя и в литературе вполне сложившуюся практику использовать этот уродский термин "константный указатель" или "константный итератор" и т. д. И только студни каждый год гонят. Как быдто у людей нет дел поинтереснее
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, Erop, Вы писали:
.>>Есть такая неявная переменная "this", указатель, как ни странно... E>Ты тут втирал, что переменная -- это то, куда можно присваивать значения, вроде. Так с какого перепугу эта самая this -- переменная? E>Вообще, обычно это какой-то регистр, который ещё и менять нельзя...
Это не главное. Читай вики: "...поименованная...". А это называется константная переменная (хе-хе, оксюморон, конечно...), т.е. значение переменной может быть установлено только один раз.
.>>Можно конечно так говорить, но до тех пор пока не возникают неоднозначности. Человек пишет "А как тогда называют указатель, который нельзя менять?", а ты "Ну, например, так и называют. Но указатель -- это это же значение". Он имеет в виду понятие "переменная типа указатель" (т.е. "...поименованная, либо адресуемая иным способом область памяти..."), а ты подменяешь понятием "значение типа указатель" (т.е. элемент множества допустимых значений типа данных "указатель", адрес, короче говоря). E>Ну это просто омонимия. Если мы говорим про переменную типа int, что это число, которое пробегает такие-то значения, то почему мы не можем так же обращаться с указателем или там итератором и т. д.?
Нет, разные аспекты это, как "тёплый" и "мягкий", а не омонимы.
E>А термин "константный указатель" неудачный, конечно же, но так уж сложилось, что термин "константное число" не востребован, и аналогичный термин про указатели тоже не шибко нужен.
Потому что "константная переменная типа указатель" кратко называют "константный указатель", "константная переменная типа целое число" это "целочисленная константа":
const int a = 42;
говорят, что "a" — константа, а "42" это число.
E> А вот указатель, который даёт ro доступ к указуемому, так же, как итератор с такими свойствами и т. д. -- востребован. Вот его, AFAIK и называют "константный указатель". Но это безусловно вносит путанницу. Можно ввести себе за правило говорить "указатель на константу", например. Это тоже путает, но меньше.
Так дело в том, что есть "переменная-указатель на константу", а есть "константная переменная-указатель" — принципиально разные вещи! Как их предлагаешь различать?
E>Тем не менее я наблюдаю вокруг себя и в литературе вполне сложившуюся практику использовать этот уродский термин "константный указатель" или "константный итератор" и т. д. И только студни каждый год гонят. Как быдто у людей нет дел поинтереснее
Так ты всё в кучу свалил. Вот и получилось месиво из терминов.
Эх... Но раз мы в КСВ, значит дел интереснее и правда нет.
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Здравствуйте, ., Вы писали:
E>>Ну это просто омонимия. Если мы говорим про переменную типа int, что это число, которое пробегает такие-то значения, то почему мы не можем так же обращаться с указателем или там итератором и т. д.? .>Нет, разные аспекты это, как "тёплый" и "мягкий", а не омонимы.
Давай ещё и про "омонимию" поспорим?
Кроме того, ты так и не ответил по существу, почему про число так говорить можно, а про указатель -- нет
.>Потому что "константная переменная типа указатель" кратко называют "константный указатель", "константная переменная типа целое число" это "целочисленная константа":
Ну дык и?
Говори, что foo*const -- это указатель-константа...
Ты же const int "константным числом" не называешь?
.>Так дело в том, что есть "переменная-указатель на константу", а есть "константная переменная-указатель" — принципиально разные вещи! Как их предлагаешь различать?
Я лично предпочитаю их различать на С++ а не в русском уменовании.
Переменная-константа -- редко бывает нужна, и её можно прямо так и называть. А "константный указатель", так же, как и "владеющий" -- вполне, AFAIK, сложившиеся практики.
.>Так ты всё в кучу свалил. Вот и получилось месиво из терминов. .>Эх... Но раз мы в КСВ, значит дел интереснее и правда нет.
У меня есть. Например, у меня есть задачка. Есть очень многомерное, но всё же конечно-мерное пространство. Ну, скажем пространство с размерностью несколько тысяч измерений.
В этом пространстве задано N множеств точек. Все точки всех множеств различны. Далее, у меня есть число K. Выберем в нашем пространстве K точек (это могут быть какие-то из заданных точек, или вообще какие-то точки пространства, и такой и такой варианты можно рассмотреть) Для каждой выбранной точки, построим её окрестность -- это множество точек, которые ближе к данной точке, чем к другим, то есть это будет некоторое обобщение диаграммы Вороного на многомерный случай. И для каждой из выбранных точек посчитаем представители скольки множеств попадают в её окрестность.
Дальше эти числа (количества множеств, которые попадают) можно как-то объединить. Например, можно взять просто максимум по всем точкам, а если это не удобно, то можно как-то усреднить, например, взяв в качестве весов число точек из объединения исходных N точек, попадающих в окрестность. В общем не важно, как объединять -- можно выбрать. Назовём результирующее число весом этой системы из К точек, относительно заданного множества из N точек.
Задача состоит в том, что бы по заданному множеству множеств и числу К построить систему точек с минимальным или, хотя бы с субминимальным весом
Но я сейчас болею и про систему с субминимальным весом думается плохо.
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, Qbit86, Вы писали:
EOH>>Да, хабр более попули... популяри... вообщем на более широкую аудиторию рассчитан, но в целом там не так печально, как многие рассказывают. RSS их читать интересно.
Q>Всё бы ничего, но часто, не имя на то никаких оснований, считают Хабрахабр достаточно авторитетным источником, чтобы давать ссылки на статьи оттуда в дискуссии. Статьи, рождённые после прочтения через строчку половины главы Рихтера и вольного переосмысления «молодым талантливым автором».
У Хабра есть одно замечательное свойство, перекрывающее основную массу недостатков: он рассчитан на заведомо конструктивные статьи, при этом качественно подготовленные по оформлению, и легко читаемые. Как правило, это или howto'шки (то есть описания, как что-то сделать под задачу, описанную автором, или близкую к тому), или учебно-описательные статьи. Эта политика — лучшее, что в нём есть. Разумеется, безусловно принимать всё сказанное на нём на веру — нельзя, тут он ничем не отличается, например, от Википедии: критическое мышление и самостоятельная сверка источников обязательна при изучении материалов с обоих. Но если я хочу прочитать что-то по незнакомой мне области, получить общее впечатление и понять, куда копать дальше, то Хабр — отличное средство.
И я не вижу ничего плохого, чтобы давать ссылки на Хабр в дискуссиях, в ситуациях, где или требуется в принципе показать неединственность позиции оппонента, или продемонстрировать толковый иллюстративный материал (разумеется, если сам его проверил и убедился в принципиальной правильности).
Из последних примеров — например, именно с Хабра я услышал про timsort. Через более "строгие" ресурсы оно могло дойти бы через несколько лет, потому что напрямую с ним не сталкиваешься; но в качестве учебного факта его существование и упоминание крайне важно.
Здравствуйте, Erop, Вы писали:
E>>>Ну это просто омонимия. Если мы говорим про переменную типа int, что это число, которое пробегает такие-то значения, то почему мы не можем так же обращаться с указателем или там итератором и т. д.? .>>Нет, разные аспекты это, как "тёплый" и "мягкий", а не омонимы. E>Давай ещё и про "омонимию" поспорим? E>Кроме того, ты так и не ответил по существу, почему про число так говорить можно, а про указатель -- нет
Выделил жирным кривость. Так наоборот же говорят: переменная типа int, значение которой пробегает какие-то числа. Как может число пробегать значения?
.>>Потому что "константная переменная типа указатель" кратко называют "константный указатель", "константная переменная типа целое число" это "целочисленная константа": E>Ну дык и? E>Говори, что foo*const -- это указатель-константа...
Стол-раскладушка == раскладной стол, указатель-константа == константный указатель.
Русский язык, однако.
E>Ты же const int "константным числом" не называешь?
Потому что "переменная типа указатель" часто называют просто "указатель", ибо в большинстве случаев неоднозначностей не возникает. Иногда и числовые переменные разывают числами.
int f(int x) {return x * x;}
о таком коде вполне естественно сказать: "Функция f возводит в квадрат число x". Хотя x не только переменная, но и не константа, и даже значение присвоить можно будет.
.>>Так дело в том, что есть "переменная-указатель на константу", а есть "константная переменная-указатель" — принципиально разные вещи! Как их предлагаешь различать? E>Я лично предпочитаю их различать на С++ а не в русском уменовании. E>Переменная-константа -- редко бывает нужна, и её можно прямо так и называть. А "константный указатель", так же, как и "владеющий" -- вполне, AFAIK, сложившиеся практики.
Я стараюсь придерживаться стиля писать const (точнее final, т.к. последнее время на java пишу) везде где можно.
E>У меня есть. Например, у меня есть задачка. Есть очень многомерное, но всё же конечно-мерное пространство. Ну, скажем пространство с размерностью несколько тысяч измерений. E>В этом пространстве задано N множеств точек. Все точки всех множеств различны. Далее, у меня есть число K. Выберем в нашем пространстве K точек (это могут быть какие-то из заданных точек, или вообще какие-то точки пространства, и такой и такой варианты можно рассмотреть) Для каждой выбранной точки, построим её окрестность -- это множество точек, которые ближе к данной точке, чем к другим, то есть это будет некоторое обобщение диаграммы Вороного на многомерный случай. И для каждой из выбранных точек посчитаем представители скольки множеств попадают в её окрестность. E>Дальше эти числа (количества множеств, которые попадают) можно как-то объединить. Например, можно взять просто максимум по всем точкам, а если это не удобно, то можно как-то усреднить, например, взяв в качестве весов число точек из объединения исходных N точек, попадающих в окрестность. В общем не важно, как объединять -- можно выбрать. Назовём результирующее число весом этой системы из К точек, относительно заданного множества из N точек. E>Задача состоит в том, что бы по заданному множеству множеств и числу К построить систему точек с минимальным или, хотя бы с субминимальным весом
E>Но я сейчас болею и про систему с субминимальным весом думается плохо.
Что-то как-то условий не хватает. K точкек можно выбрать в одном месте, подальше ото всех, значит от значения K не зависит. И окресности тоже непонятно какие... Что такое субминимальный вес тоже не очень понимаю.
Или я совсем задачу не понял.
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
E>>>аналогичная терминология используется и в случае "константных ссылок", кстати
I>>И этот человек рассказывал что указатели в С++ это легко I>>Стадо леммингов не смогло проверить простейший код Я все понимаю, можно перепутать с какой стороны const ставится, но почему у сиплюсников отсутствует привычка проверять код который они пишут ?
E>Что ты имеешь в виду конкретно?
Здравствуйте, hattab, Вы писали:
I>> Я ж говорил, большая часть программистов и даже сиплюсников не понимает указатели
H>То-то неосиляторы и расхваливают свои бронированные памперсы Комплексуют-с
Не, это для тебя указатели суть показатель крутости
Здравствуйте, ., Вы писали:
.>Выделил жирным кривость. Так наоборот же говорят: переменная типа int, значение которой пробегает какие-то числа. Как может число пробегать значения?
Ну, как член ряда, например. Никода не встречал выражения вида (для любого икс из множества..."
.>Стол-раскладушка == раскладной стол, указатель-константа == константный указатель. .>Русский язык, однако.
Во-первых, это не русский, а кривая калька с английского.
Во-вторых, плащ-палатка -- это разве палаточный плащ?
E>>У меня есть. Например, у меня есть задачка. Есть очень многомерное, но всё же конечно-мерное пространство. Ну, скажем пространство с размерностью несколько тысяч измерений. E>>В этом пространстве задано N множеств точек. Все точки всех множеств различны. Далее, у меня есть число K. Выберем в нашем пространстве K точек (это могут быть какие-то из заданных точек, или вообще какие-то точки пространства, и такой и такой варианты можно рассмотреть) Для каждой выбранной точки, построим её окрестность -- это множество точек, которые ближе к данной точке, чем к другим, то есть это будет некоторое обобщение диаграммы Вороного на многомерный случай. И для каждой из выбранных точек посчитаем представители скольки множеств попадают в её окрестность. E>>Дальше эти числа (количества множеств, которые попадают) можно как-то объединить. Например, можно взять просто максимум по всем точкам, а если это не удобно, то можно как-то усреднить, например, взяв в качестве весов число точек из объединения исходных N точек, попадающих в окрестность. В общем не важно, как объединять -- можно выбрать. Назовём результирующее число весом этой системы из К точек, относительно заданного множества из N точек. E>>Задача состоит в том, что бы по заданному множеству множеств и числу К построить систему точек с минимальным или, хотя бы с субминимальным весом
E>>Но я сейчас болею и про систему с субминимальным весом думается плохо. .>Что-то как-то условий не хватает. K точкек можно выбрать в одном месте, подальше ото всех, значит от значения K не зависит. И окресности тоже непонятно какие... Что такое субминимальный вес тоже не очень понимаю. .>Или я совсем задачу не понял.
Ну, для простоты считай, что мы выбираем К точек из членов заданных множеств.
Но это не важно, если выбрать К точек совсем далеко где-то, то ближайшая их них к нашим заданным точкам будет иметь в соседях представителей всех N множеств, то есть вес будет N...
Субминимальный -- значит, что это неточный минимум, но близко к нему...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
06.02.12 18:08, Erop написав(ла): > У меня есть. Например, у меня есть задачка. Есть очень многомерное, но всё же конечно-мерное пространство. Ну, скажем пространство с размерностью несколько тысяч измерений. > В этом пространстве задано N множеств точек. Все точки всех множеств различны. Далее, у меня есть число K. Выберем в нашем пространстве K точек (это могут быть какие-то из заданных точек, или вообще какие-то точки пространства, и такой и такой варианты можно рассмотреть) Для каждой выбранной точки, построим её окрестность -- это множество точек, которые ближе к данной точке, чем к другим, то есть это будет некоторое обобщение диаграммы Вороного на многомерный случай. И для каждой из выбранных точек посчитаем представители скольки множеств попад
ают в её окрестность. > Дальше эти числа (количества множеств, которые попадают) можно как-то объединить. Например, можно взять просто максимум по всем точкам, а если это не удобно, то можно как-то усреднить, например, взяв в качестве весов число точек из объединения исходных N точек, попадающих в окрестность. В общем не важно, как объединять -- можно выбрать. Назовём результирующее число весом этой системы из К точек, относительно заданного множества из N точек. > Задача состоит в том, что бы по заданному множеству множеств и числу К построить систему точек с минимальным или, хотя бы с субминимальным весом
Это похоже на задачу квантизации в некотором роде. Вот идеи.
Чистый Монте-Карло. Выбираем K точек случайно. И так несколько раз. Берём набор с минимальным весом.
Оптимизация. Берём набор K точек и стараемся сделать его лучше. Или выбрасываем худшую точку (или несколько худших) и заменяем её (их) случайными, остальные оставляя неизменными. Или двигаем её (их) небольшими шажками, такими чтобы базовые точки переходили по одной из одной ячейки Вороного в другую, улучшая худшую за счёт соседа. Возможно при этом двигая и остальные точки так, что их характеристики не изменяются, но это оставляет больше свободы для маневра худшими. Если K много больше размерности, может ещё сработать общая деформация пространс
тва — K точек прикрепляются к грубой сетке, узлы которой сдвигаются, деформируя ячейки и двигая точки.
Можно стартовать с меньшим K, а потом расщеплять худшие точки и оптимизировать.
Всё эти шаги повторить многократно, перемежёвывая по вкусу.
В зависимости от конкретных особенностей задачи, выбор начальных случайных точек и дополнительных может быть не совсем случайным.
Здравствуйте, B0FEE664, Вы писали:
BFE>Здравствуйте, Dym On, Вы писали:
Q>>>
Константный указатель на неконстантный объект это:
DO>>Такие вопросы теперь голосованием решаются ? Жду голосования по таблице умножения
BFE>Предлагаю вопрос. BFE>Верно ли, что 010 * 010 равно 100 ? BFE>да BFE>нет
BFE>
Лучше так:
чему равно 84, если 8*8 == 54?
А твой вопрос приведёт к священному спору вокруг заведомо устаревших фич раннего Си, за которые давно пора бить ногами.
I>>>И этот человек рассказывал что указатели в С++ это легко I>>>Стадо леммингов не смогло проверить простейший код Я все понимаю, можно перепутать с какой стороны const ставится, но почему у сиплюсников отсутствует привычка проверять код который они пишут ?
E>>Что ты имеешь в виду конкретно?
I>Очевидно, речь про C3892, типа ты не понял
Это про попытку ПРИСВАИВАНИЯ в переменную-константу? В процитированном тобой коде есть только две нициализации и нет ни одного присваивания...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, gegMOPO4, Вы писали:
MOP>Это похоже на задачу квантизации в некотором роде. Вот идеи.
N -- сотни тысяч
K -- сотни, можно тысячи, но чем меньше, тем лучше.
Цель -- получить по возможности маленький набор точек с весом сотни.
MOP>Чистый Монте-Карло. Выбираем K точек случайно. И так несколько раз. Берём набор с минимальным весом.
Не сойдётся.
MOP>Оптимизация. Берём набор K точек и стараемся сделать его лучше. Или выбрасываем худшую точку (или несколько худших) и заменяем её (их) случайными, остальные оставляя неизменными. Или двигаем её (их) небольшими шажками, такими чтобы базовые точки переходили по одной из одной ячейки Вороного в другую, улучшая худшую за счёт соседа. Возможно при этом двигая и остальные точки так, что их характеристики не изменяются, но это оставляет больше свободы для маневра худшими. Если K много больше размерности, может ещё сработать общая деформация пространс MOP>тва — K точек прикрепляются к грубой сетке, узлы которой сдвигаются, деформируя ячейки и двигая точки.
MOP>Можно стартовать с меньшим K, а потом расщеплять худшие точки и оптимизировать.
MOP>Всё эти шаги повторить многократно, перемежёвывая по вкусу.
MOP>В зависимости от конкретных особенностей задачи, выбор начальных случайных точек и дополнительных может быть не совсем случайным.
Ещё можно класстеризовать исходные точки, исходя из каких-нибудь принципов.
Ещё можно ГА с кооптацией заюзать.
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, Erop, Вы писали:
E>>>Что ты имеешь в виду конкретно?
I>>Очевидно, речь про C3892, типа ты не понял
E>Это про попытку ПРИСВАИВАНИЯ в переменную-константу? В процитированном тобой коде есть только две нициализации и нет ни одного присваивания...
Вот-вот. А должно быть. Ибо в условии "константный указатель" а не хрен знает что.
Здравствуйте, Ikemefula, Вы писали:
I>Вот-вот. А должно быть. Ибо в условии "константный указатель" а не хрен знает что.
Ты, конечно, извини, но я термин "константный указатель" понимаю иначе, и я написал КАК ИМЕННО. О том и спор вроде, какая из трактовок более общепринята...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, Ikemefula, Вы писали:
I> H>То-то неосиляторы и расхваливают свои бронированные памперсы Комплексуют-с
I> Не, это для тебя указатели суть показатель крутости
С чего бы вдруг Я вообще не вижу в них ничего особенного.
Здравствуйте, Erop, Вы писали:
I>>Вот-вот. А должно быть. Ибо в условии "константный указатель" а не хрен знает что. E>Ты, конечно, извини, но я термин "константный указатель" понимаю иначе, и я написал КАК ИМЕННО. О том и спор вроде, какая из трактовок более общепринята...
У тебя какое то уникальное понимание этих константных указателей, о чем тебе и сообщают .
Здравствуйте, hattab, Вы писали:
I>> H>То-то неосиляторы и расхваливают свои бронированные памперсы Комплексуют-с I>> Не, это для тебя указатели суть показатель крутости
H>С чего бы вдруг Я вообще не вижу в них ничего особенного.
Видишь, а потому хвастаешься в довольно глупой манере.
I>У тебя какое то уникальное понимание этих константных указателей, о чем тебе и сообщают .
Судя по опросу из начала топика -- вовсе нет...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, Erop, Вы писали:
I>>У тебя какое то уникальное понимание этих константных указателей, о чем тебе и сообщают .
E>Судя по опросу из начала топика -- вовсе нет...
Ты же позиционируешь себя как эксперта А голосования с++-леммингов ничего не показывают.
Здравствуйте, Ikemefula, Вы писали:
I>Ты же позиционируешь себя как эксперта А голосования с++-леммингов ничего не показывают.
Я-то? Вовсе нет.
Кроме того, своё экспертное мнение я ужо сказал
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, Ikemefula, Вы писали:
I> I>> Не, это для тебя указатели суть показатель крутости
I> H>С чего бы вдруг Я вообще не вижу в них ничего особенного.
I> Видишь, а потому хвастаешься в довольно глупой манере.
Здравствуйте, netch80, Вы писали:
N>Лучше так:
N>чему равно 84, если 8*8 == 54?
Так совсем нелогично. 84 равно 84 в любом раскладе.
Тогда уж надо спросить что-то типа, сколько будет 84/21, например...
Или половина корня из 84...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, Erop, Вы писали:
N>>чему равно 84, если 8*8 == 54?
E>Тогда уж надо спросить что-то типа, сколько будет 84/21, например...
Блин, 84/21 -- всегда даст 4 !
Что за непер?
В общем надо спросить как-то так:
Чему равно 84/5, если 8*8=54?
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, Erop, Вы писали:
E>Здравствуйте, Erop, Вы писали:
N>>>чему равно 84, если 8*8 == 54?
E>>Тогда уж надо спросить что-то типа, сколько будет 84/21, например... E>Блин, 84/21 -- всегда даст 4 !
E>Что за непер? E>В общем надо спросить как-то так:
E>Чему равно 84/5, если 8*8=54?
Здравствуйте, vpchelko, Вы писали:
I>>Я ж говорил, большая часть программистов и даже сиплюсников не понимает указатели
V>Это не указатели понимают. Это синтаксис непрозрачный.
Те знакомые, которые имели проблемы с пониманием указателей, не лучше их понимали и в Паскале (борландовском), где синтаксис намного прозрачнее.
Здравствуйте, netch80, Вы писали:
N>Те знакомые, которые имели проблемы с пониманием указателей, не лучше их понимали и в Паскале (борландовском), где синтаксис намного прозрачнее.
Как бы сам вопрос немножко в сторонке от понятия указателей. И вообще указатель это очень примитивное понятие. Перемена указывающая на кусок памяти?
Только в Ц к ней типизацию прикрутили и другие костыли.
Здравствуйте, vpchelko, Вы писали:
V>Здравствуйте, MasterZiv, Вы писали:
MZ>>и за это мы ТОЖЕ его любим.
V>Да мы любим регистрироваться, оставлять где попало свой маил и другие данные.
Ну, ещё один сайт не сильно повредит, особенно если указать подконтрольный форвардер. Тем более если на этот сайт регулярно заглядываешь в поисках интересного. Я из такой логики зарегистрировался и очень обиделся, увидев, что этот readonly не даёт даже отвечать в Q&A. Потом почитал комментарии про его политику, про откровенно неадекватное поведение хозяев сайта и решил, что если мне потребуется туда нормальный логин — я легко найду несколько источников инвайтов, но если мне надо что-то просто написать и выставить на публику — то есть масса других мест, от личного блога до RSDN. А лезть в сообщество, которое варится само в себе, как-то не хочется.
Одно принципиально жаль: что его хозяева не понимают, что закрытое сообщество или высокий порог вхождения хороши только на короткое время, когда надо рывком сконцентрировать усилия и собрать группу для реализации, и неважно, что это — государство, фирма или публичный сайт. А длительное существование закрытого сообщества приводит только к деградации.
Здравствуйте, vpchelko, Вы писали:
N>>Те знакомые, которые имели проблемы с пониманием указателей, не лучше их понимали и в Паскале (борландовском), где синтаксис намного прозрачнее. V>Как бы сам вопрос немножко в сторонке от понятия указателей.
В стороне, но в случае Си синтаксис — дополнительный барьер восприятия.
V> И вообще указатель это очень примитивное понятие. Перемена указывающая на кусок памяти? V>Только в Ц к ней типизацию прикрутили и другие костыли.
А к чему тут собственно примитивность? Ассемблер ещё примитивнее, но работать с ним многим ещё сложнее.
Здравствуйте, vpchelko, Вы писали:
V>И вообще указатель это очень примитивное понятие.
Не согласен. Базовое — да, примитивное — нет.
V>Перемена указывающая на кусок памяти?
Здравствуйте, B0FEE664, Вы писали:
BFE>Здравствуйте, vpchelko, Вы писали:
V>>И вообще указатель это очень примитивное понятие. BFE>Не согласен. Базовое — да, примитивное — нет.
V>>Перемена указывающая на кусок памяти?
BFE>Вопроса не понял. Перемена чего?
Перемена тормазов . Когда тут возможность править посты будет?
Здравствуйте, netch80, Вы писали:
N>В стороне, но в случае Си синтаксис — дополнительный барьер восприятия.
Да синтаксис такой, что можно легко запутаться.
N>А к чему тут собственно примитивность? Ассемблер ещё примитивнее, но работать с ним многим ещё сложнее.
Благо, я перешел с ц на жаву.
Да тут нед идиотской вещи как оператора delete[] и new[].
Во 2ом большом проекте, я багу как раз с этим фиксил, память текла...