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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 5.00
Alex Z
27 / 1 / 0
Регистрация: 29.06.2011
Сообщений: 136
#1

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

03.04.2012, 12:44. Просмотров 1390. Ответов 2
Метки нет (Все метки)

В учебнике вывод предлагают делать так:
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::cout или просто using namespace std? - C++
Приветствую! Сейчас учу С++, постигаю азы так сказать. В арсенале две книги - Джефф Кент, &quot;Основы программирования &quot; и Х.М....

Что означает using namespace std? - C++
Что означает в с++? using namespace std объясните пожалуйста простым языком))

Зачем часто писать std::, если можно один раз using namespace std? - C++
зачем часто писать std:: если можно один раз using namespace std?

Пространство имен - namespace std или std:: - C++
В каких случая лучше писать (std::cout) или просто прописать (namespace std) и почему ?

Коллеги что же все такие делает "using namespace std"? - C++
Я понял то что &quot;using namespace st&quot; мы вводим для того что бы не писать &quot;std::cout&lt;&lt;&quot; ну а конкретно, деловым...

using namespace std - C++
Обьясните пожалуйста понятным языком, что такое пространство имен, и зачем нужна эта команда или std::

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
soon
2540 / 1305 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
03.04.2012, 12:48 #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 #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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.04.2012, 12:53
Привет! Вот еще темы с ответами:

using namespace std; - C++
Здравствуйте. Я заметил, что многие программисты стараются избегать этой строчки в своих программах. С чем это связанно? И еще...

namespace std - C++
Добрый день. Вычитал что могу использовать любой namespace. Но в другом месте написано что если не использовать std, то не сможет...

std:: vs namespace - C++
Тема не для холивара, объясните пожалуйста чем лучше std:: а не using namespace std ? Без namespace std, возникает такая ошибка, но...

Using namespace std - C++
В чем отличие, если один cout (или что-то другое) будет в std, а другой stdd, для чего вообще using namespace? Уже везде где только можно...


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

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru