|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
25.12.2015, 10:48 | #1 |
Подтвердите свой е-майл
Регистрация: 12.11.2014
Сообщений: 470
|
Чем плох using
Пространства имён придуманы ради того, чтоб разрешить совпадать нескольким идентификаторам. А зачем это собственно надо? Пусть у вас есть свой строковый класс my::string, кроме него существует ещё std::string. Но если вам не нужен std::string, то в чём конфликт? Можно ведь не инкладить <string>. Вам нужен my::string и вы заинкладили <string> ради класса std::wstring? Ну скопируйте <string> в каталог проекта да почистите его. В чём собственно проблема? Класс string будет один. Много работы? Эйси, можно было с самого начала разделить std::string, std::wstring и std::u32string по разным файлам, пространство имён здесь не нужно. А зачем же оно нужно? Да за тем, чтоб использов
ать std::string и my::string одновременно. Код:
Последний раз редактировалось taras-proger; 25.12.2015 в 10:56. |
25.12.2015, 11:43 | #2 |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,528
|
1. что бы ЗНАТЬ какие пространства БУДУТ использованы (потребуются) без прочесывания.
2. чтобы разрешить использование этих имен std:: my:: (да-да это тоже имя и оно должно быть объявлено).
программа — запись алгоритма на языке понятном транслятору
|
25.12.2015, 11:52 | #3 | |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
Цитата:
пространтства имен должны обеспечить независимость, и они это делают.(как ни странно) не приходится писать TMyMegaString. убирает префиксы классов.(см Делфи) вообще в последнее время встречал что неплохо в using стоит пихать конкретные классы, а не все пространство. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
|
25.12.2015, 12:07 | #4 | |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,758
|
Цитата:
|
|
25.12.2015, 12:11 | #5 |
Подтвердите свой е-майл
Регистрация: 12.11.2014
Сообщений: 470
|
|
25.12.2015, 12:14 | #6 | |||
Подтвердите свой е-майл
Регистрация: 12.11.2014
Сообщений: 470
|
Цитата:
Код:
Цитата:
Код:
Цитата:
Последний раз редактировалось taras-proger; 25.12.2015 в 12:41. |
|||
25.12.2015, 12:39 | #7 | |
Подтвердите свой е-майл
Регистрация: 12.11.2014
Сообщений: 470
|
Цитата:
Код:
Последний раз редактировалось taras-proger; 25.12.2015 в 12:42. |
|
25.12.2015, 12:40 | #8 | ||
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
Цитата:
Цитата:
далее, может вас удивит но у using тоже есть область видимости. а применяется он для сокращения кода. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
||
25.12.2015, 12:43 | #9 |
Подтвердите свой е-майл
Регистрация: 12.11.2014
Сообщений: 470
|
|
25.12.2015, 12:49 | #10 |
Подтвердите свой е-майл
Регистрация: 12.11.2014
Сообщений: 470
|
Тоже мне решение. Если члены разных пространств используются в разных частях программы, то их отлично можно разнести по модулям и не икладить в каждый всё подряд. Но ни какая область видимости юзина не поможет решить конфликт имён двух string из разных пространств, используемых в одних скобках, а только решение конфликта имён, используемых в одной и той же области видимости, и есть преимущество пространств имён перед другими подходами.
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
в чем ошибка? | yana1213 | Помощь студентам | 1 | 15.05.2014 20:12 |
В чем ошибка!! | deadh5n1 | Помощь студентам | 1 | 08.01.2012 21:13 |
Чем плох тег <center> ? | Alar | HTML и CSS | 14 | 28.05.2010 16:28 |
В чем отличие С++ от С# | valerij | Свободное общение | 14 | 10.03.2009 03:00 |
В чем ошибка? | delphyok | Паскаль, Turbo Pascal, PascalABC.NET | 6 | 24.02.2009 23:33 |