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

Klasy a przestrzenie nazw c++

Object Storage Arubacloud
0 głosów
964 wizyt
pytanie zadane 29 sierpnia 2017 w C i C++ przez Sic Dyskutant (8,510 p.)
Witam!

W jaki sposób działają na siebie klasy oraz przestrzenie nazw? Czy powinny być tworzone osobno? Czy może przestrzenie nazw powinny być dodawany do klasy, bądź na odwrót? Ostatnim moim pytanie dotyczącym tego tematu jest czym się różnią?.

2 odpowiedzi

+2 głosów
odpowiedź 29 sierpnia 2017 przez criss Mędrzec (172,590 p.)
edycja 29 sierpnia 2017 przez criss

Nie rozumiem co to znaczy "tworzone osobno". Przestrzenie nazw służą:

  • Po pierwsze: do podkreślenia, że jego zawartość (funkcja, klasa, whatever) należy do jakiejś większej całości (jakaś biblioteka chociażby)
  • Po drugie: zapewnienia, że "user code" (to co pisze programista korzystający z takiej np. biblioteki) nie będzie się kłócił z nazwami z biblioteki

Czym się różnią? Przestrzeń nazw jest przestrzenią nazw i niczym więcej. Nie pozwala nawet na żadną hermetyzacje. Klasy mogą po sobie dziedziczyć, mają kwalifikatory dostępu, cały mechanizm poliformizmu, no i - najważniejsze - opisują w końcu obiekty a nie tylko zamykają w sobie jakieś elementy.
Często jednak używa się klas jako takie małe rozszerzenie namespace-a (możliwość hermetyzacji) - tzn. usuwa się konstruktor a wszystkie membery są statyczne. Z tego powodu jest propozycja czegoś takiego jako element języka - 3.11 namespace_class . Ofc zanim to wejdzie, jeszcze kilka dobrych lat przyjdzie nam poczekać (o ile w ogóle), ale chciałem zaznaczyć, że problem jest zauważany.

0 głosów
odpowiedź 29 sierpnia 2017 przez WireNess Stary wyjadacz (11,240 p.)

Nazwy w języku C++ mogą odnosić się do zmiennych, funkcji, struktur, wyliczeń, klas i składowych struktur oraz klasklas. Kiedy projekt programistyczny rozrasta się, rośnie też ryzyko kolizji tych nazw. Ryzyko to zwiększa się jeszcze bardziej, jeśli w projekcie wykorzystywane są biblioteki pochodzące z różnych źródeł. Może się bowiem zdarzyć, że w obu takich bibliotekach znajdą się kolidujące ze sobą definicje klas o nazwach List, Tree czy Node. Jeśli będziemy korzystać z wersji List z jednej biblioteki i wersji Tree z drugiej, obie będą oczekiwa' odmiennej implementacji klasy Node. Konflikty tego rodzaju określamy ogólnie mianem problemów przestrzeni nazw. Standars języka C++ przewidział do rozwiązywania takich problemów środek w postaci przestrzeni nazw dającym programistom lepszą kontrolę nad zasięgiem nazw. [...]

Źródło: Książka pt.: ,,Język C++ - szkoła programowania wydanie VI" - Stephen Prata

 

Odpowiedź do pytania 1 ^^^^^^^^^^.

Odpowedź na pytanie 2: W przestrzeni nazw tworzysz wszystko co chcesz, aby miało unikatową nazwę:

namespace przestrzen
{
    class Klasa
    {
        ...
    }
    int zmienn;
    enum wyliczenie = {...};

    //itd.
}

Odpowiedź do pytania 3: Czym mają się niby różnić? To są 2 odmienne rzeczy :)

Pozdrawiam

Podobne pytania

0 głosów
1 odpowiedź 111 wizyt
pytanie zadane 16 marca 2019 w C i C++ przez Michał_Warmuz Mądrala (5,830 p.)
0 głosów
1 odpowiedź 169 wizyt
pytanie zadane 25 kwietnia 2017 w C i C++ przez Daniel Janus Nowicjusz (150 p.)
0 głosów
1 odpowiedź 73 wizyt
pytanie zadane 22 listopada 2023 w C i C++ przez hutsalo1998 Użytkownik (540 p.)

92,626 zapytań

141,488 odpowiedzi

319,852 komentarzy

62,009 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...