1 / 1 / 0
Регистрация: 15.02.2020
Сообщений: 23
|
||||||
1 | ||||||
Пространство имен и конфликт имен04.10.2020, 22:00. Показов 4130. Ответов 32
Доброго времени суток уважаемые пользователи. В контексте решаемой задачи возникла необходимость написать функцию деления двух чисел, в ней нет абсолютно ничего особенного, да и вопрос, собственно, не к функции. Вот ее код:
0
|
04.10.2020, 22:00 | |
Ответы с готовыми решениями:
32
пространство имен Пространство имен пространство имён Пространство имен |
1 / 1 / 0
Регистрация: 15.02.2020
Сообщений: 23
|
|
04.10.2020, 22:05 [ТС] | 3 |
iostream подключает много всего если использовать using namespace std, а у меня подключены именно три функции cout, cin и endl и ничего кроме них не должно подключаться
0
|
1 / 1 / 0
Регистрация: 15.02.2020
Сообщений: 23
|
|
04.10.2020, 22:12 [ТС] | 5 |
И вообще подключение файла не равнозначно подключению пространства имен этого файла
0
|
1 / 1 / 0
Регистрация: 15.02.2020
Сообщений: 23
|
|
04.10.2020, 22:14 [ТС] | 7 |
Вот тут можно подробнее или ссылки на источники
0
|
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
|
|
04.10.2020, 22:17 | 8 |
Про что подробнее и на источники о чем? Что конкретно не понятно? Представь, что у тебя функция div просто валяется в хидере. Все. Ты объявляешь такую же - конфликт. Пространства имен тут не участвуют никаким боком.
0
|
1 / 1 / 0
Регистрация: 15.02.2020
Сообщений: 23
|
|
04.10.2020, 22:22 [ТС] | 9 |
Благодарю за пояснение, мне было известно об отсутствии пространства имен в C, но полагал, как оказалось ошибочно, что в плюсах каждый файл относятся к конкретному пространству имен, в том числе и сишные
0
|
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
|
||||||
04.10.2020, 22:27 | 10 | |||||
Нет, это две несвязанные сущности. Плюсовый заголовочник потом просто сишную функцию через
1
|
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
|
|
04.10.2020, 22:32 | 11 |
не по теме вопроса:
как сказать. у Вас целочисленное деление + сама функция типа int. вряд ли это то что Вам нужно
0
|
1 / 1 / 0
Регистрация: 15.02.2020
Сообщений: 23
|
|
04.10.2020, 22:46 [ТС] | 12 |
То, что это эти сущности не связаны, это спорное утверждение, так как пространство имен необходимо для предотвращения конфликта одинаковых имен в разных файлах
Добавлено через 5 минут Как уже было сказано, вопрос заключался в именно конфликте имен, а не в реализации функции, т.е. в необходимости рассмотреть функцию с сигнатурой схожей с уже имеющейся функцией.
0
|
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
|
|
04.10.2020, 22:50 | 13 |
Для чего оно надо - вопрос философский. И как связано имя std с заголовочным файлом iostream? Разве я не могу поменять имя файла не убрав из него std? Или наоборот, убрать std, оставив заголовочный файл. Так о какой конкретно связи речь?
0
|
1 / 1 / 0
Регистрация: 15.02.2020
Сообщений: 23
|
|
04.10.2020, 22:56 [ТС] | 14 |
0
|
1 / 1 / 0
Регистрация: 15.02.2020
Сообщений: 23
|
|
04.10.2020, 23:09 [ТС] | 16 |
Речь о том, что при наличии файла входящего в определенное пространство имен, невозможно использовать содержимое этого файла (будь то классы, функции и т.д.) без объявления using или директивы using
0
|
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
|
|
04.10.2020, 23:13 | 17 |
Тоже нет. И сама фраза, когда в пространство имен у тебя входит файл, она странная.
Ну да фиг с ним. Эта мистическая связь в твоей голове и привела тебя к созданию этой темы. Дальше думай, что хочешь
0
|
1 / 1 / 0
Регистрация: 15.02.2020
Сообщений: 23
|
|
04.10.2020, 23:28 [ТС] | 18 |
К чему же в таком случае используется директива или объявление using?
Добавлено через 4 минуты Библиотека iostream, подключаемая через заголовочный файл iostream, входит в std, если быть точнее
0
|
8971 / 4317 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|
04.10.2020, 23:35 | 19 |
вопрос сформулирован как то странно.
ты не русский что ли? не к "чему же", а "для чего". ключевое слово using позволяет объединить имя (или пространство имен) с текущим. например, в твоём случае: ты сообщил компилятору, что имя ::std::cout должно быть доступно в глобальном скоупе. теперь необязательно писать полное (квалифицированное) имя ::std::cout ,можно писать неквалифицированное (без указания полного пути) - cout для чего такое может быть нужно? например, просто для удобства разработчика. вот ты зачем написал свои чем руководствовался, когда написал эту строчку?
0
|
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
|
|
04.10.2020, 23:42 | 20 |
Я устал.
iostream - это просто имя файла. Никуда это файл не входит и ни откуда не выходит. Ни про какие "библиотеки" он тоже не в курсе.
0
|
04.10.2020, 23:42 | |
04.10.2020, 23:42 | |
Помогаю со студенческими работами здесь
20
Пространство имён Пространство имен Пространство имён! Пространство имён Пространство имен пространство имен Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |