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

На что влияет расположение строчки using namespace std; ? - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 5.00
Alex Z
27 / 1 / 0
Регистрация: 29.06.2011
Сообщений: 136
03.04.2012, 12:44     На что влияет расположение строчки using namespace std; ? #1
В учебнике вывод предлагают делать так:
1-ый способ:
C++
1
2
3
4
5
6
7
#include <iostream>
int main()
{
   std::cout << "Hello World!" << std::endl;
 
   return 0;
}
2-ой способ:
C++
1
2
3
4
5
6
7
8
9
10
#include <iostream>
int main()
{
   using std::cout;
   using std::endl;
 
   cout << "Hello World!" << endl;
 
   return 0;
}
3-ий способ:
C++
1
2
3
4
5
6
7
8
9
#include <iostream>
int main()
{
   using namespace std;
 
   cout << "Hello World!" << endl;
 
   return 0;
}
Вот так. И примеры приведены с использованием одного из трёх способов. Но вот встретился пример в книге, где написано так:
C++
1
2
3
4
5
6
7
8
9
#include <iostream>
using namespace std;
int main()
{
   // код
   cout << "Что-то вывести" << endl;
 
   return 0;
}
То есть строчка:
C++
1
using namespace std;
вынесена из функции main. Вообще всё работает. Но просто я знаю, что если например переменную объявлять внутри функции, то она будет локальная, а снаружи - глобальная. То есть разница есть, куда засунуть строчку:
C++
1
int x=6;
Тут поди тоже есть разница, но автор учебника ничего не пишет (или мне не по шарам). Собственно, в этом и вопрос:
1) На что влияет расположение строчки using namespace std; (внутри main или снаружи)?

И ещё один вопрос задам здесь же, так как он на ту же тему. Вот возьмём любой способ вывода, например этот:
C++
1
2
3
4
5
6
7
8
9
10
#include <iostream>
int main()
{
   using std::cout;
   using std::endl;
 
   cout << "Hello World!" << endl;
 
   return 0;
}
А если я вместо этого напишу так:
C++
1
2
3
4
5
6
7
8
9
10
#include <iostream>
int main()
{
   using std::cout;
   using std::endl;
 
   std::cout << "Hello World!" << std::endl;
 
   return 0;
}
то компилятор ошибку не выдаёт и всё работает.
2) То есть я так понял, если я указал, из какого пространства имён cout и endl вначале, а потом опять в явном виде это указываю перед каждым использованием, то это вроде как не ошибка? Просто лишняя писанина?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.04.2012, 12:44     На что влияет расположение строчки using namespace std; ?
Посмотрите здесь:

C++ зачем часто писать std:: если можно один раз using namespace std?
C++ using namespace std
using namespace std; C++
C++ что использовать std::cout или просто using namespace std?
Коллеги что же все такие делает "using namespace std"? C++
Что означает using namespace std? C++
using namespace std C++
namespace std C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
03.04.2012, 12:48     На что влияет расположение строчки using namespace std; ? #2
Цитата Сообщение от Alex Z Посмотреть сообщение
1) На что влияет расположение строчки using namespace std; (внутри main или снаружи)?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
 
void func()
{
    cout << "asd" << std::endl;
}
 
int main()
{
    using namespace std;
    cout << "dsa" << endl;
    func();
    return 0;
}
Цитата Сообщение от Alex Z Посмотреть сообщение
2) То есть я так понял, если я указал, из какого пространства имён cout и endl вначале, а потом опять в явном виде это указываю перед каждым использованием, то это вроде как не ошибка? Просто лишняя писанина?
Ага
Abdula
9 / 9 / 1
Регистрация: 28.03.2012
Сообщений: 116
03.04.2012, 12:53     На что влияет расположение строчки using namespace std; ? #3
Когда используешь одно пространство то разницы нет... можешь почитать статьи о использовании нескольких пространств, например поэксперементировать с пользовательскими
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
namespace Namespace12
{
  int foo;
}
 
void func1()
{
  using namespace Namespace12;
  // теперь все имена из пространства имён Namespace12 будут видны здесь без дополнительных префиксов
 
  ++foo;
}
 
void func2()
{
  // а тут имя нужно уточнить:
  Namespace12::foo = 42;
wiki
Yandex
Объявления
03.04.2012, 12:53     На что влияет расположение строчки using namespace std; ?
Ответ Создать тему
Опции темы

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