klasy pytanie c++

N0
  • Rejestracja:ponad 5 lat
  • Ostatnio:11 dni
  • Postów:319
0

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

_13th_Dragon
  • Rejestracja:ponad 19 lat
  • Ostatnio:około miesiąc
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


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
N0
  • Rejestracja:ponad 5 lat
  • Ostatnio:11 dni
  • Postów:319
0

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

fasadin
  • Rejestracja:ponad 13 lat
  • Ostatnio:ponad 2 lata
  • Postów:4882
1

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

_13th_Dragon
Nie da się "zmieniac zakres" tak czy owak pozostaniesz w tym zakresie co jesteś :D @Nikto0, jak widzisz próba prostszego tłumaczenia, od razu napotykamy się na problem z określeniami. Aczkolwiek w uproszczeniu @fasadin ma racje tylko takie tłumaczenie jedynie zamąci ci w głowie.
N0
a co zmienia w tym zakresie?
_13th_Dragon
Można użyć innego zakresu niż obecny.
_13th_Dragon
  • Rejestracja:ponad 19 lat
  • Ostatnio:około miesiąc
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.


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
kq
Moderator C/C++
  • Rejestracja:ponad 11 lat
  • Ostatnio:minuta
  • Lokalizacja:Szczecin
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)


koszalek-opalek
@_13th_Dragon: @kq nie zapomniał -- to wszystko działa dokładnie analogicznie do tego co napisał... :)
kq
Klasa, enum, struktura to też przestrzeń nazw (w ciut ogólniejszym pojęciu ni​ż namespace)
PerlMonk
Gorzej jak w dokumentacji jest paamayinm nekudotayim https://www.php.net/manual/en/language.oop5.paamayim-nekudotayim.php
koszalek-opalek
paamayim-nekudotayim to po prostu dwa dwukropki po hebrajsku. :) A PHP pochodzi z Izraela.
PerlMonk
Raczej silnik a nie sam język.
Miang
  • Rejestracja:prawie 7 lat
  • Ostatnio:28 minut
  • Postów:1584
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;
}

dzisiaj programiści uwielbiają przepisywać kod z jednego języka do drugiego, tylko po to by z projektem nadal stać w miejscu ale na nowej technologii
edytowany 1x, ostatnio: Miang
szumek
  • Rejestracja:prawie 16 lat
  • Ostatnio:3 miesiące
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.

edytowany 1x, ostatnio: szumek
ZK
masz dar do tłumaczenia :D SUPER :D

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.