Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
1

Использование namespace

24.10.2016, 12:23. Показов 910. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день,

есть ли разница в подходах ниже:

C++
1
2
3
4
5
6
7
8
//Foo.cpp
 
using namespace A;
 
Foo::Foo()
{
 
}


C++
1
2
3
4
5
6
7
8
9
10
//Foo.cpp
 
namespace A
{
   Foo::Foo()
   {
   
   }
 
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.10.2016, 12:23
Ответы с готовыми решениями:

Использование using namespace std;
Я где-то слышал что использование такой диррективы на корню убивает пространство имен, но ведь...

Использование namespace в нескольких файлах
Добрый вечер, хочу спросить, можно ли вот так размещать функции в namespace?: Memory.h ...

Namespace. Красивая иерархия или удобное использование
Здравствуйте! Для более логичного деления библиотеки использую иерархические namespace. ...

namespace
Сколько читаю форумы и прочее, видел только namespace std. какие еще бывают и зачем они нужны?

8
Любитель чаепитий
3742 / 1798 / 566
Регистрация: 24.08.2014
Сообщений: 6,016
Записей в блоге: 1
24.10.2016, 12:33 2
Цитата Сообщение от rikimaru2013 Посмотреть сообщение
есть ли разница в подходах ниже:
А класс Foo, насколько я понимаю, находится в этом неймспейсе?
0
Модератор
Эксперт С++
13507 / 10757 / 6412
Регистрация: 18.12.2011
Сообщений: 28,712
24.10.2016, 12:35 3
Цитата Сообщение от rikimaru2013 Посмотреть сообщение
Foo::Foo()
Это что - конструктор по умолчанию класса Foo ?

В 1 случае класс Foo не должен принадлежать пространству имен A.
0
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
24.10.2016, 12:40  [ТС] 4
zss, я так понял, пока вы не заметили, что там нету int main лучше дописать первый пост. Не умеете абстрагироваться вообще - ужас.

C++
1
2
3
4
5
6
7
8
9
10
11
// Foo.h
#pragma once
 
namespace A
{
    class Foo
    {
    public:
        Foo();
    };
}
0
Модератор
Эксперт С++
13507 / 10757 / 6412
Регистрация: 18.12.2011
Сообщений: 28,712
24.10.2016, 12:44 5
rikimaru2013, Причем здесь main.
using namespace позволяет использовать данные из указанного пространства имен, но не заносить туда.
Поэтому в 1 варианте конструктор не попадет в пространство имен A с соответствующими последствиями.
0
Любитель чаепитий
3742 / 1798 / 566
Регистрация: 24.08.2014
Сообщений: 6,016
Записей в блоге: 1
24.10.2016, 12:47 6
Цитата Сообщение от rikimaru2013 Посмотреть сообщение
using namespace A;
Это же для пользования пространством имён.
Цитата Сообщение от rikimaru2013 Посмотреть сообщение
namespace A
А это для инкапсулирования чего-либо в пространстве имён.

Разве нет?
0
Неэпический
17870 / 10635 / 2054
Регистрация: 27.09.2012
Сообщений: 26,736
Записей в блоге: 1
24.10.2016, 12:47 7
Цитата Сообщение от zss Посмотреть сообщение
с соответствующими последствиями.
С какими, например?
Ну, кроме квалификации имен и подобного.
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
#include <iostream>
 
 
namespace Test
{
    struct Foo
    {
        Foo();
    };
}
 
 
 
int main()
{
    Test::Foo f;
}
 
 
 
using namespace Test;
 
Foo::Foo()
{
    std::cout << "Foo::Foo" << std::endl;
}
http://rextester.com/DGI10952
1
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
24.10.2016, 13:53  [ТС] 8
Croessmah, есть различия то?)
0
Неэпический
17870 / 10635 / 2054
Регистрация: 27.09.2012
Сообщений: 26,736
Записей в блоге: 1
24.10.2016, 14:10 9
Цитата Сообщение от rikimaru2013 Посмотреть сообщение
есть различия то?
Например, если уже есть такая структура:
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
43
44
45
46
#include <iostream>
 
 
namespace Test
{
    struct Foo
    {
        Foo();
    };
}
 
 
struct Foo
{
    Foo(){}
};
 
 
 
int main()
{
    Test::Foo f;
}
 
 
//fail:
/*
using namespace Test;
 
Foo::Foo()//Foo::Foo или Test::Foo::Foo?
{
    std::cout << "Foo::Foo" << std::endl;
}
*/
 
//ok:
namespace Test
{
    
 
Foo::Foo()
{
    std::cout << "Foo::Foo" << std::endl;
}
    
}
http://rextester.com/DGI10952
1
24.10.2016, 14:10
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.10.2016, 14:10
Помогаю со студенческими работами здесь

Namespace
Мне посоветовали использовать функцию &quot;using namespace std;&quot;. За что это строчка отвечает? Может...

namespace
Не могу понять суть пространства имен. Точнее ,в общих чертах , я понял что это,но зачем это...

namespace
Адекватно-ли использовать в таком случае пространство имен? Лучший-ли это выход из ситуации? ...

Friend NameSpace
Привет! Допустим есть такое: namespace X { static const int a = 1; static const int b =...


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

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