Re[4]: const_iterator
От: Qbit86 Кипр
Дата: 01.02.12 08:41
Оценка:
Здравствуйте, Erop, Вы писали:

E>Но указатель -- это это же значение, а не объект с какиими-тто состояниями. В каком-то смысле никакой указатель нельзя менть, так же, как и число пять нельзя менять, например...


В каком таком «каком-то» смысле указатель нельзя менять? Был, например, (неконстантный) указатель со значением адреса 0xA1B3C5D4, стал указателем со значением 0xB2C4D6E7. Число пять — литерал, это вообще rvalue.

E>Кстати, помогите моему склерозу. Разве константная ссылка -- это не термин из стандарта?


Константная ссылка разночтений не вызывает. Но я всё равно называю её ссылкой на константу.
Глаза у меня добрые, но рубашка — смирительная!
Re: За что мы любим Хабрахабр?
От: Философ Ад http://vk.com/id10256428
Дата: 01.02.12 08:42
Оценка: :)
>Константный указатель на неконстантный объект ...

//...инкапсулирующий неконстантный указатель на константный объект....

ТЬФУ!
ГАДОСТЬ!

Это одна из причин того, что я всегда недолюбливал C++...
Всё сказанное выше — личное мнение, если не указано обратное.
Re[6]: T const *
От: Qbit86 Кипр
Дата: 01.02.12 08:46
Оценка:
Здравствуйте, Erop, Вы писали:

E>Так что там у теюя выходит? const_iterator -- неконстантный, или T const*, таки константный? Или между ними есть какая-то принципиальная разница в семантике? ;)


Использую такую нотацию, которая допускает чтение справа налево.

const_iterator — неконстантный итератор на константу.
const_iterator const — константный итератор на константу.
const const_iterator — тоже константный итератор на константу (не использую такую нотацию).
T const* — неконстантный указатель на константу.
const T* — тоже неконстантный указатель на константу (не использую такую нотацию).
T* const — константный указатель на неконстанту.
Глаза у меня добрые, но рубашка — смирительная!
Re[5]: const_iterator
От: Erop Россия  
Дата: 01.02.12 08:56
Оценка:
Здравствуйте, Qbit86, Вы писали:

Q>В каком таком «каком-то» смысле указатель нельзя менять? Был, например, (неконстантный) указатель со значением адреса 0xA1B3C5D4, стал указателем со значением 0xB2C4D6E7. Число пять — литерал, это вообще rvalue.


Обычно, кога говорят "число", то имеют в виду не числовую переменную, сожержащую какое-то значение, а само значение -- число. С указателями есть аналогичная традиция.
Соответственно указатель 0xA1B3C5D4 тоже нельзя поменять, можно поменять занчение переменной, хранящей указатель.

Вообще, чаще всего тип переменных надо называть, когда это либо формальный параметр функции, либо тип возвращаемого значения. реже, когда это поле, и совсем редко нужен тип просто автоматической переменной.
Я так думаю, что терминология идёт из этого обстоятельства.

Q>Константная ссылка разночтений не вызывает. Но я всё равно называю её ссылкой на константу.

Это последовательно, но не общепринято...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[7]: T const *
От: Erop Россия  
Дата: 01.02.12 08:58
Оценка:
Здравствуйте, Qbit86, Вы писали:

Q>const_iterator — неконстантный итератор на константу.

А если по-английски общаешься? Неужели не cont iterator называешь?
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re: За что мы любим Хабрахабр?
От: fin_81  
Дата: 01.02.12 08:59
Оценка:
Здравствуйте, Qbit86, Вы писали:

Q>Константный указатель на неконстантный объект это:


Q>Foo *const foo

Q>const Foo *foo

Мне кажется здесь семантический оверхед на квадратный сантиметр букв и на человеческом языке и на языке программирования. Шаблон программирования "го-дипер". А какие проблемы решает эта конструкция, на сколько часто встречается такая конструкция, есть ли смысл заострять на этом внимание?
Re[5]: const_iterator
От: Erop Россия  
Дата: 01.02.12 09:07
Оценка: +2
Здравствуйте, о_О, Вы писали:

о_О>я смотрю ты тоже голосовал...

Я на ваш хабр не хожу...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[8]: T const *
От: Qbit86 Кипр
Дата: 01.02.12 09:10
Оценка:
Здравствуйте, Erop, Вы писали:

Q>>const_iterator — неконстантный итератор на константу.

E>А если по-английски общаешься? Неужели не cont iterator называешь? :???:

По-английски я на тему C++ не общаюсь. Но, наверное, называл бы iterator to const. Даже если это непривычно адресату, он вряд ли перепутает.

Я ж не виноват, что в Си извращённые право-левые правила декларации, а не естественные?
Глаза у меня добрые, но рубашка — смирительная!
Re[6]: [x]
От: Qbit86 Кипр
Дата: 01.02.12 09:11
Оценка:
Здравствуйте, Erop, Вы писали:

E>Я на ваш хабр не хожу... :xz:


Всё правильно сделал.
Глаза у меня добрые, но рубашка — смирительная!
Re[6]: const_iterator
От: о_О
Дата: 01.02.12 09:12
Оценка: +1
Здравствуйте, Erop, Вы писали:

E>Здравствуйте, о_О, Вы писали:


о_О>>я смотрю ты тоже голосовал...

E>Я на ваш хабр не хожу...

я тоже не хожу
Re[2]: За что мы любим Хабрахабр?
От: wander  
Дата: 01.02.12 09:36
Оценка: 1 (1)
Здравствуйте, fin_81, Вы писали:

f> Мне кажется здесь семантический оверхед на квадратный сантиметр букв и на человеческом языке и на языке программирования. Шаблон программирования "го-дипер". А какие проблемы решает эта конструкция, на сколько часто встречается такая конструкция, есть ли смысл заострять на этом внимание?


Встречается повсеместно. Оверхед в сравнении с более современными языками может и есть, но это здесь не играет роли.
avalon 1.0rc3 build 426, zlib 1.2.3
Re[2]: За что мы любим Хабрахабр?
От: B0FEE664  
Дата: 01.02.12 10:07
Оценка: 1 (1) :)))
Здравствуйте, fin_81, Вы писали:

Q>>Константный указатель на неконстантный объект это:


Q>>Foo *const foo

Q>>const Foo *foo

_>А какие проблемы решает эта конструкция,


Позволяет ясно декларировать намерения автора кода.

_>на сколько часто встречается такая конструкция,


часто. Вот, специально для вас, строчка из проекта:
const boost::shared_ptr<const Alerts>&

_>есть ли смысл заострять на этом внимание?


Рассмотрим запись a->b
Известно, что если на вечеринке rsdn вы назовёте стрелочкой этот модификатор доступа к члену класса, то все на несколько секунд замолкнут и уставятся на вас, а кто-то в углу комнаты уронит бокал...
И каждый день — без права на ошибку...
Re[3]: За что мы любим Хабрахабр?
От: fin_81  
Дата: 01.02.12 10:25
Оценка:
Здравствуйте, wander, Вы писали:

W>Встречается повсеместно. Оверхед в сравнении с более современными языками может и есть, но это здесь не играет роли.


Константный указатель (*const) часто встречается? Не верю. И этот опрос на хабре это подтверждает. Если и встречается, то эту конструкцию не понимают, а те кто понимает, то старается не использовать, чтобы не вводить в ступор своих коллег. Ссылки более понятны (семантически менее перегружены), покрывают практически весь функционал константных указателей, кроме NULL.

Если рассматривать чистый си, то там еще большие проблемы с const, особенно при работе со стандартными библиотеками, которые в основном решаются путем игнорирования или принудительного снятия константности.

И вообще const похожа целую философию, которую пытались перенять из функционального программирования. И как то она плохо вяжется с присваиванием переменных.
Re[2]: За что мы любим Хабрахабр?
От: Abyx Россия  
Дата: 01.02.12 10:40
Оценка:
Здравствуйте, Философ, Вы писали:

>>Константный указатель на неконстантный объект ...


Ф>//...инкапсулирующий неконстантный указатель на константный объект....


Ф>ТЬФУ!

Ф>ГАДОСТЬ!

Ф>Это одна из причин того, что я всегда недолюбливал C++...


да Вы просто ниасилили.
In Zen We Trust
Re[4]: За что мы любим Хабрахабр?
От: B0FEE664  
Дата: 01.02.12 10:55
Оценка:
Здравствуйте, fin_81, Вы писали:

W>>Встречается повсеместно. Оверхед в сравнении с более современными языками может и есть, но это здесь не играет роли.


_>Константный указатель (*const) часто встречается? Не верю.


Поиск в проекте строки "* const " даёт 69 результатов для 790 файлов
Поиск в проекте строки "*const" даёт 763 результата в одном из файлов (больше нигде не встречается).
Всего в проекте 295163 строк.
Поиск по строке "class " выдаёт 1968 результатов.

Мда, действительно не часто. Оно и понятно. Делать указатель константным всё равно, что писать const перед интом в параметре функции:

void Foo(const int x);

И каждый день — без права на ошибку...
Re[3]: За что мы любим Хабрахабр?
От: Философ Ад http://vk.com/id10256428
Дата: 01.02.12 11:10
Оценка:
Здравствуйте, Abyx, Вы писали:

A>Здравствуйте, Философ, Вы писали:


>>>Константный указатель на неконстантный объект ...


Ф>>//...инкапсулирующий неконстантный указатель на константный объект....


Ф>>ТЬФУ!

Ф>>ГАДОСТЬ!

Ф>>Это одна из причин того, что я всегда недолюбливал C++...


A>да Вы просто ниасилили.


Осилил, помогли осилить, а что-то и заставили осилить. Однако...
Всё сказанное выше — личное мнение, если не указано обратное.
Re: За что мы любим Хабрахабр?
От: MasterZiv СССР  
Дата: 01.02.12 10:18
Оценка: +2
On 02/01/2012 08:44 AM, Qbit86 wrote:

> Разумеется, за высокую квалификацию участников сообщества и выдающееся качество

> статей.

А я лично люблю его совсем за другое, вот за это:
-----------------------------------------------------

Доступ к публикации ограничен

Вы пытаетесь открыть страницу, доступную только подписчикам блога «C++».

Подписка на блог доступна любому пользователю, зарегистрированному на
Хабрахабре. Достаточно зайти на страницу блога и присоединиться к нему.

Если у вас есть аккаунт на Хабрахабре, вы можете войти под своим логином.

Подробнее о регистрации можно прочесть в разделе «Помощь».

-----------------------------------------------------

Ну так и пусть их себе там варятся...
Posted via RSDN NNTP Server 2.1 beta
Re[3]: За что мы любим Хабрахабр?
От: MasterZiv СССР  
Дата: 01.02.12 10:19
Оценка: +1 :)
On 02/01/2012 10:36 AM, William_X wrote:

> Вроде бы уже проблему можно решить — есть read-only регистрация.


и за это мы ТОЖЕ его любим.
Posted via RSDN NNTP Server 2.1 beta
Re[2]: За что мы любим Хабрахабр?
От: MasterZiv СССР  
Дата: 01.02.12 10:23
Оценка: +1
On 02/01/2012 11:57 AM, Erop wrote:

> аналогичная терминология используется и в случае "константных ссылок", кстати


Аналогичной она не может быть в принципе, поскольку ссылка -- это константный,
автоматически разименуемый компилятором указатель, поэтому константностью
может в случае ссылки обладать только то, на что ссылка ссылается.
Там хоть как говори -- не запутаешься.
Posted via RSDN NNTP Server 2.1 beta
Re[7]: const_iterator
От: MasterZiv СССР  
Дата: 01.02.12 10:24
Оценка:
On 02/01/2012 01:12 PM, о О wrote:

> E>Я на ваш хабр не хожу...

> я тоже не хожу

Дык, не пускають ...
Posted via RSDN NNTP Server 2.1 beta
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.