Любитель чаепитий
|
|
1 | |
Const_cast может добавлять константность?01.12.2016, 00:24. Показов 1498. Ответов 12
Метки нет (Все метки)
Недавно мне задали вопрос, что может делать
const_cast , я с серьёзным лицом ответил, что может удалять/добавлять константность указателям(и ещё некоторые вещи сказал, но тут опущу, для ясности). На что человек среагировал крайне неадекватно, посмотрел на меня круглыми глазами и спросил: "Добавлять константность???" Я даже замешкался на секунду и подумал, что не прав, но придя домой открыл стандарт и нашёл там примеры использования const_cast с добавлением константности(в 5.2.11 я не нашёл ничего, что прямо говорило бы об этом, пришлось искать примеры). Суть такова, что открыв первую попавшуюся книгу для новичков и посмотрев там "главу" о const_cast я увидел следующее(приблизительно):
P.S. Тот человек, который задавал мне всякие вопросы ещё утверждал, что void main стандартом разрешено, поэтому в его компетентности сомневаться не приходится. Добавлено через 8 минут Не по теме: Название у темы неудачное. Но сам ничего придумать не могу пока что, буду рад, если модераторы сами исправят на что-нибудь типа: "Нюансы языка: работа с const_cast", ну или на что-то такое.
0
|
01.12.2016, 00:24 | |
Ответы с готовыми решениями:
12
Константность ссылки в параметре при перегрузке оператора Как снять константность ссылки для передачи в функцию адреса Подскажите программку для ubuntu, которая может обрабатывать, резать, добавлять эффекты, делать слайд-шоу и пр Как создать метакласс, который при создании класса может читать атрибуты из файла и добавлять их классу? |
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
|
||||||
01.12.2016, 00:48 | 2 | |||||
1
|
Любитель чаепитий
|
|
01.12.2016, 00:53 [ТС] | 3 |
rikimaru2013, Спасибо, конечно, но мой поток мыслей был направлен как раз на то, что он может это делать, а в книгах пишут, что только удалять может!
Не по теме: Наверное это было из рассказа "заголовок прочитал, код написал". :D
0
|
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
|
|
01.12.2016, 01:01 | 4 |
Не по теме: GbaLog-, ну почему) пару слов прочитал с 1 поста, после того как код уже вставил с IDE сюда) Добавлено через 4 минуты GbaLog-, внизу страницы нашёл сноску
1
|
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
|
|
01.12.2016, 01:35 | 5 |
Ну, вообще-то надо на автора смотреть. Если автор придурок, то что же он может написать кроме бреда?
Хотя и на старушку бывает прорушка. Дезинформацию по этому вопросу внес не кто иной, как сам Страуструп! В его третьем издании написано, что "const_cast аннулирует действие модификатора const", т.е. ни про добавление, ни про volatile ни слова. У Липпмана более трезво изложено, но про volatile тоже ничего не говорится. Т.е. в учебниках данная тема действительно довольно темно изложена. Добавлено через 8 минут Кстати, недавно прочитал, что одним из проявлений клипового мышления является неспособность выстраивать иерархии. Люди только с виду похожи друг на друга, а по интеллектуальным и духовным качествам разброс идет от минус до плюс бесконечности. Иногда "клиповые" суждения просто поражают. Один, например, пишет: Страуструп пишет одно, а вася пупкин - другое, кому верить? Или в теме человеку отвечает на вопрос один разумный и толковый, другой неадекват, который несет полную ахинею, и автор темы в растерянности - показания расходятся, кому верить?!
1
|
Неэпический
|
||||||
01.12.2016, 09:19 | 6 | |||||
Стандартом это не запрещено.
Но код при этом становится не переносимым. Обычно, не константное неявно кастится к константному без всяких проблем. А книги призваны объяснять что-то более разумным языком, чем в стандарте, так что еще больше подвержены ошибкам, неточностям, и т.д. Если считали, что оно только снимает - то да. Помимо const, оно также снимает/накладывает volatile:
1
|
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
|
|
01.12.2016, 10:05 | 7 |
0
|
Любитель чаепитий
|
|
01.12.2016, 13:02 [ТС] | 8 |
А кому из писателей верить?
Сообщение от 3.6.1.2
А, я понял, вторая часть предложения к этому же относится, во я дуб. Ну это-то понятно. Меня больше распирало человеку тому доказать, что он неправ! А то он такой из себя весь важный был, как будто я только вчера учебник открыл, а он уже там 10 лет программирует на С++ такой крутой. Я хоть и зелёный, но уже не совсем! И не позволю с собой как с новичком обращаться! Это высказывание было к этой цитате: Основные возможности const_cast'a я знал.
0
|
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
|
|
01.12.2016, 15:05 | 9 |
Ну, как говорил В.О. Ключевский, Христы появляются редко, как кометы, а иуды не переводятся, как комары.
То же самое и в интеллектуальной сфере. Умных и толковых авторов можно по пальцам перечесть, а придурошных бумагомарателей пруд пруди. Ну а так-то, как говорил А.С. Пушкин, нужно при контакте с новым человеком прежде всего сразу понять с кем имеешь дело, и действовать сообразно.
0
|
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
|
|
01.12.2016, 16:07 | 11 |
0
|
Неэпический
|
|
01.12.2016, 16:56 | 13 |
0
|
01.12.2016, 16:56 | |
01.12.2016, 16:56 | |
Помогаю со студенческими работами здесь
13
Какие из этих методов можно и стоит отметить как константные (имеется ввиду логическая константность) const_cast Const_cast ub Const_cast Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |