Здравствуйте, 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*, таки константный? Или между ними есть какая-то принципиальная разница в семантике?
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском