• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Do czego służy namespace?

42 Warsaw Coding Academy
+1 głos
7,460 wizyt
pytanie zadane 15 marca 2016 w C i C++ przez Daaa22 Dyskutant (8,250 p.)
Wiem co to, wiem gdzie się można z tym spotkać, wiem o nich praktycznie wszystko, ale nie mam pojęcia po co one są.

4 odpowiedzi

+6 głosów
odpowiedź 15 marca 2016 przez iwan9449 Pasjonat (20,810 p.)
wybrane 16 marca 2016 przez Daaa22
 
Najlepsza
Namespace jak sama nazwa wskazuje jest to wykorzystywana przestrzeń nazw. Dzięki deklaracji na początku pliku "using namespace XXX" nie musisz dopisywać przedrostków przed każdą funkcją znajdującą się w tej przestrzeni. Najbardzie powszechnym przykładem jest użycie przestrzeni nazw std, jeżeli nie zadeklarował byś tej przestrzeni do przed każdym cin czy cout musiałbyś dopisać przedrostek std::. Po co są stosowane te przestrzenie? A po to, żeby unikać konfliktów nazw w dużych projektach, które wykorzystują dużą ilość bibliotek w których funkcje, klasy i obiekty mogą mieć te same nazwy.

Pozdrawiam!
komentarz 15 marca 2016 przez Daaa22 Dyskutant (8,250 p.)
Dzięki :) . .
+2 głosów
odpowiedź 16 marca 2016 przez MILLERTdev Użytkownik (900 p.)
Pozwala to na łatwiejsze odnoszenie się do różnych klas. Najpopularniejsze using namespace std sprawia, że nie musisz przed każdą funkcja z klasy standardowej pisac std::
+1 głos
odpowiedź 15 marca 2016 przez Dorion300 Szeryf (90,250 p.)
Aby nie mieć konfliktów z nazwami funkcji.

Czasem w różnych bibliotekach może się natrafić że funkcja się tak samo nazywa.

A tak to można ominąć za pomocą namespace.

Cała biblioteczka jest w namepsace x a druga biblioteczka znajduje się w namepsace y.

Przez co szansa na konflikty nazw różnych funkcji, jest o wiele mniejszy.
komentarz 15 marca 2016 przez KubenQPL Maniak (62,840 p.)
Tak się teraz zastanawiam, że dodając kilka przestrzeni nazw do swojego projektu można napotkać konflikty nazw funkcji o ile występują takie same, co nie? Czy jest to jakoś inaczej rozwiązane?
komentarz 15 marca 2016 przez Daaa22 Dyskutant (8,250 p.)

Masz na myśli coś takiego:

#include <iostream>

namespace a
{
    int funkcja(int a, int b)
    {
        return a+b;
    }
}

namespace b
{
    int funkcja(int a, int b)
    {
        return a-b;
    }
}

int main()
{
    int a=1;
    int b=2;
    std::cout<<a::funkcja(a,b);
    std::cout<<std::endl;
    std::cout<<b::funkcja(a,b);
    return 0;
}

 

komentarz 16 marca 2016 przez draghan VIP (106,230 p.)

Pewnie ma na myśli coś takiego:

#include <iostream>
 
namespace a
{
    int funkcja(int a, int b)
    {
        return a+b;
    }
}
 
namespace b
{
    int funkcja(int a, int b)
    {
        return a-b;
    }
}

using namespace a;
using namespace b;

int main()
{
    int a=1;
    int b=2;
// i co tutaj niżej się stanie...? ;)
    std::cout<<funkcja(a,b);
    std::cout<<std::endl;
    std::cout<<funkcja(a,b);
    return 0;
}

 

1
komentarz 16 marca 2016 przez Daaa22 Dyskutant (8,250 p.)
To niżej nie zadziała, bo kompilator nie wie, do czego się odnosimy. Przynajmniej ja tak to zrozumiałem :)
–1 głos
odpowiedź 16 marca 2016 przez Mateusz11 Pasjonat (22,910 p.)
using namespace std;

Jeżeli chodzi Ci o to to:

Za pomocą polecenia, przed każdą instrukcją cout cin... nie będziesz musiał dawać std::. Bez tego zwykły kod będzie wyglądał tak:

std::cout<<""<<endl;
std::cin>>l;

itp. itd.

 

Pozdrawiam

komentarz 16 marca 2016 przez Daaa22 Dyskutant (8,250 p.)

Nie o to chodziło. Nie pytałem o polecenie using namespace, tylko po co są namespace'y.

Podobne pytania

0 głosów
1 odpowiedź 236 wizyt
pytanie zadane 19 kwietnia 2021 w PHP przez Filipczak Gaduła (4,020 p.)
+2 głosów
1 odpowiedź 1,155 wizyt
pytanie zadane 11 kwietnia 2021 w C i C++ przez Dawidziu Bywalec (2,630 p.)
0 głosów
1 odpowiedź 678 wizyt
pytanie zadane 6 grudnia 2019 w C i C++ przez Gildin1_2 Gaduła (3,060 p.)

93,385 zapytań

142,384 odpowiedzi

322,540 komentarzy

62,745 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
...