С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.98/47: Рейтинг темы: голосов - 47, средняя оценка - 4.98
0 / 0 / 0
Регистрация: 20.12.2016
Сообщений: 98
1

Пространство имен - namespace std или std::

14.04.2017, 20:26. Показов 9389. Ответов 52
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
В каких случая лучше писать (std::cout) или просто прописать (namespace std) и почему ?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.04.2017, 20:26
Ответы с готовыми решениями:

Использовать using namespace std; или каждый раз прописывать std:: . ?
Как безопаснее и рациональнее поступать? Как в больших проектах поступают на этот счет?

Что использовать, std::cout или просто using namespace std?
Приветствую! Сейчас учу С++, постигаю азы так сказать. В арсенале две книги - Джефф Кент, ...

Std:: или using namespace std;
Вопрос к профессионалам. Меня давно интересуют такие вопросы: 1) Почему, многим, вроде бы не...

Пространство имен std
Какой стиль лучше ? using std::cout; using std::endl; or using namespace std;

52
31 / 31 / 6
Регистрация: 23.10.2014
Сообщений: 107
20.04.2017, 21:22 41
Author24 — интернет-сервис помощи студентам
daslex, чем же? char[]-ы вместо int-ов? Функции вместо конструкторов? Суть та же.
0
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
20.04.2017, 21:35 42
Создайте мнофайловый проект.
Увидите маленькое отличие.

Добавлено через 8 минут
У меня пространство имён разбросано по разным файлам.
У Вас об этом умолчано.

Вот чем.

Добавлено через 1 минуту
А так, конечно, то же самое:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <iostream>
 
namespace na
{
    char a[] = "na::a";
    void f();
}
 
namespace nb
{
    char a[] = "nb::b";
    void f();
}
 
using namespace na;
using namespace nb;
 
char a[] = "::a";
 
void na::f() { std::cout << a << '\n'; }
void nb::f() { std::cout << a << '\n'; }
 
int main()
{
    na::f();
    nb::f();
}
0
31 / 31 / 6
Регистрация: 23.10.2014
Сообщений: 107
20.04.2017, 22:15 43
Цитата Сообщение от daslex Посмотреть сообщение
У меня пространство имён разбросано по разным файлам.
У Вас об этом умолчано.
Чем у нас там препроцессор то занимается? Текстовой подстановкой?

Вот так выглядят ваши файлы после обработки препроцессором:
основная программа
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// #include "my_namespace_list.h"
namespace X{
    class MyClass{
    public:
        MyClass();
    };
}
 
namespace std{
    class MyClass{
    public:
        MyClass();
    };
}
 
int main(){
    X::MyClass x;
    std::MyClass y;
}

namespace_realization.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
// #include "my_namespace_list.h"
namespace X{
    class MyClass{
    public:
        MyClass();
    };
}
 
namespace std{
    class MyClass{
    public:
        MyClass();
    };
}
 
// #include "nedra.h"
/*Где-то в недрах пространств*/
namespace X     {    int y = 200;    }
namespace std   {    int y = 500;    }
/*----------------------------*/
 
using namespace std;  //для y
using namespace X;    //для y
 
X::MyClass::MyClass(){
    {
        cout << "X" << ':' << y << '\n';
    }
}
 
std::MyClass::MyClass(){
    {
        cout << "std" << ':' << y << '\n';
    }
}

Сами хедеры - "выбрасываются".

Ну и сравните получившийся файл реализации с тем что я показал, за вычитом main.
0
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
20.04.2017, 22:18 44
В моём случае если выкинуть using namespace, то придётся писать std::, X:: и прочее, у Вас - нет.
0
31 / 31 / 6
Регистрация: 23.10.2014
Сообщений: 107
20.04.2017, 22:29 45
Ну незнаю https://wandbox.org/permlink/7rhhiLINlGUVCiB8
код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
// #include "my_namespace_list.h"
namespace X{
    class MyClass{
    public:
        MyClass();
    };
}
 
namespace std{
    class MyClass{
    public:
        MyClass();
    };
}
 
int main()
{
    X::MyClass(); // 200
    std::MyClass(); // 500
};
 
#include <iostream>
// #include "nedra.h"
/*Где-то в недрах пространств*/
namespace X     {    int y = 200;    }
namespace std   {    int y = 500;    }
/*----------------------------*/
 
// using namespace std;  //для y
// using namespace X;    //для y
 
X::MyClass::MyClass(){
    {
        std::cout << "X" << ':' << y << '\n';
    }
}
 
std::MyClass::MyClass(){
    {
        std::cout << "std" << ':' << y << '\n';
    }
}
0
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
20.04.2017, 22:31 46
Вы сделайте, и узнаете. А то не делали, но уверены.
0
31 / 31 / 6
Регистрация: 23.10.2014
Сообщений: 107
20.04.2017, 22:57 47
Проблемы на вашей стороне, товарищ!
Миниатюры
Пространство имен - namespace std или std::  
1
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
20.04.2017, 23:25 48
Не прав я. На моей.
0
0 / 0 / 0
Регистрация: 21.02.2018
Сообщений: 2
21.02.2018, 21:57 49
Как насчет "using std:: ....."?
0
Неэпический
18109 / 10696 / 2062
Регистрация: 27.09.2012
Сообщений: 26,939
Записей в блоге: 1
21.02.2018, 21:59 50
SvAnUrI, это всё зависит от ответов на вопросы "зачем? " и "нафига? ".
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
21.02.2018, 22:42 51
Цитата Сообщение от SvAnUrI Посмотреть сообщение
Как насчет "using std:: ....."?
В заголовочных категорически не рекомендуется, только std:: .
0
0 / 0 / 0
Регистрация: 21.02.2018
Сообщений: 2
22.02.2018, 08:46 52
Не в заголовке, а в самих функциях писать, чтоб не повторяться каждый раз, я про cout и cin
0
зомбяк
1584 / 1218 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
22.02.2018, 11:05 53
C++
1
2
3
using std::cout;
using std::cin;
using std::endl;
0
22.02.2018, 11:05
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.02.2018, 11:05
Помогаю со студенческими работами здесь

Пространство имён std
Дело такое, возникла проблема! У меня есть прект на C++ который имеет следующую структуру файлов:...

Пространство имен std
привет подскажите пожалуйста почему так? #include &lt;iostream&gt; #include &lt;string&gt; int main(){ ...

Пространство имен std
В книге Дейтела (как, и в других источниках) написано, что можно написать using namespace std, а...

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


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

Или воспользуйтесь поиском по форуму:
53
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru