Форум программистов, компьютерный форум CyberForum.ru

Пространство имен - C++

Восстановить пароль Регистрация
 
Misterkat
 Аватар для Misterkat
7 / 7 / 0
Регистрация: 16.11.2012
Сообщений: 83
04.08.2013, 19:34     Пространство имен #1
Я часто встречаю в книгах, туторах, что объявлять пространство имен в больших проектах нельзя(не рекомендуемо), но нигде не сказано почему... Подскажите вы хоть, пожалуйста.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.08.2013, 19:34     Пространство имен
Посмотрите здесь:

C++ Пространство имен
C++ пространство имен
Пространство имен std C++
C++ Пространство имен std
пространство имен C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
0x10
2426 / 1598 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
04.08.2013, 19:35     Пространство имен #2
Ты о using namespace std; ?
coloc
погромист
 Аватар для coloc
409 / 245 / 15
Регистрация: 27.08.2012
Сообщений: 550
Завершенные тесты: 1
04.08.2013, 19:39     Пространство имен #3
Быть может объявлять стандартное пространство имен? Делается это во избежании коллизии имен. Вот например, я имею код ( неудачный пример, но думаю суть поймешь )
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
 
using namespace std;
 
void cout( const char *a ) {
    return;
}
 
int main() {
    cout << "Hello world!";
    return 0;
}
если закомментировать using namespace std и написать std::cout все скомпилируется.
Dani
1263 / 621 / 50
Регистрация: 11.08.2011
Сообщений: 2,236
Записей в блоге: 2
Завершенные тесты: 1
04.08.2013, 19:42     Пространство имен #4
Misterkat, ну... объявлять нэймспейс в больших проектах - рекомендуемо, т.к. будет меньше вероятности встретить несколько ф-ций\переменных с одинаковыми именами, а с namespace будет проще, т.к. нужно будет обращаться к ф-циям, переменным и т.д. юзая полное имя, например, My_namespace::x = 5(если нету using).

Using namespace не нужно использовать в больших проектах потому, что, например, объявленный в хедерах using передается на все файлы, которые включают его, поэтому в файлах, которые инклудят этот хедер, может вызываться совсем не та функция, которая нужна была.
Misterkat
 Аватар для Misterkat
7 / 7 / 0
Регистрация: 16.11.2012
Сообщений: 83
04.08.2013, 19:46  [ТС]     Пространство имен #5
Цитата Сообщение от coloc Посмотреть сообщение
Быть может объявлять стандартное пространство имен? Делается это во избежании коллизии имен. Вот например, я имею код ( неудачный пример, но думаю суть поймешь )
Код C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
using namespace std;
void cout( const char *a ) {
return;
}
int main() {
cout << "Hello world!";
return 0;
}
если закомментировать using namespace std и написать std::cout все скомпилируется.
Цитата Сообщение от Dani Посмотреть сообщение
Misterkat, ну... объявлять нэймспейс в больших проектах - рекомендуемо, т.к. будет меньше вероятности встретить несколько ф-ций\переменных с одинаковыми именами, а с namespace будет проще, т.к. нужно будет обращаться к ф-циям, переменным и т.д. юзая полное имя, например, My_namespace::x = 5(если нету using).
Using namespace не нужно использовать в больших проектах потому, что, например, объявленный в хедерах using передается на все файлы, которые включают его, поэтому в файлах, которые инклудят этот хедер, может вызываться совсем не та функция, которая нужна была.
Спасибо, ну да, логично. Мог бы и сам додуматься.
Yandex
Объявления
04.08.2013, 19:46     Пространство имен
Ответ Создать тему
Опции темы

Текущее время: 10:52. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru