klasy pytanie c++

0

Witam. Proszę o proste wytłumaczenie do czego w klasach jest znak ::?

2

W klasach nie ma tej pary znaków.
To jest operator zakresu https://docs.microsoft.com/pl-pl/cpp/cpp/scope-resolution-operator?view=msvc-160

0

Tak chodziło o operator zakresu a możesz to jakoś prościej wytłumaczyć?

1

dzieki niemu mozesz zmieniac zakres (scope) w ktorym sie znajdujesz

3
Nikto0 napisał(a):

Tak chodziło o operator zakresu a możesz to jakoś prościej wytłumaczyć?

Tam są przykłady, nie wyobrażam sobie co może być prostszego niż przykład.

6

:: rozdziela nazwy tak jak / (lub \) rozdziela nazwy folderów w ścieżkach. Możesz traktować nazwy w C++ jakby były w folderach o nazwach ich przestrzeni nazw, jak chcesz użyć jakiejś innej, możesz odnieść się do niej bezpośrednio (np. std::string to klasa string w przestrzeni nazw std relatywnej do obecnej)

0

@Nikto0: przypadkiem nie chodzi o to ze jak w klasie zadeklarujesz funkcję

class A{
public:
int funkcja_z_klasy_a();
};

to żeby ją zdefiniować na zewnątrz klasy musisz użyć ::


int A::funkcja_z_klasy_a()
{
return 1;
}
5

Łopatologicznie:
Jak mieszkasz w Polsce i wysyłasz list do kogoś w Polsce, to w adresie nie musisz wpisywać Polska (bo jesteś w tej samej przestrzeni nazw :-) ).
Podobnie z używaniem operatora zakresu ::
Gdy jesteś w tej samej przestrzeni nazw to odwołujesz się do obiektu/klasy/zmiennej/typu wpisując tylko jego nazwę, natomiast gdy to do czego się odwołujesz jest w innej przestrzeni nazw, to musisz się odwołać podając jej pełny adres a nie skrócony, czyli np tak:
przestrzenNazw::NazwaKlasy zamiast tylko NazwaKlasy
Możesz też zadeklarować wcześniej z jakiej przestrzeni nazw chcesz korzystać (np. using namespace std;) i wtedy nie musisz już pisać pełnej nazwy, bo kompilator już wie o jaką Ci chodzi. Przestrzenie nazw, są po to, by nie dochodziło do kolizji nazw. Np w USA też jest miejscowość o nazwie Warszawa.
Tak samo w Twoim kodzie może być np. klasa czy funkcja o identycznej nazwie jak w kodzie biblioteki z której chcesz korzystać. Aby te dwa byty odróżnić stosujemy właśnie przestrzenie nazw.

1 użytkowników online, w tym zalogowanych: 0, gości: 1