klasy pytanie c++

N0
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 331
0

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

_13th_Dragon
  • Rejestracja: dni
  • Ostatnio: dni
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

N0
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 331
0

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

fasadin
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 4883
1

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

_13th_Dragon
  • Rejestracja: dni
  • Ostatnio: dni
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.

kq
  • Rejestracja: dni
  • Ostatnio: dni
  • 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)

Miang
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1788
0

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

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

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

Kopiuj

int A::funkcja_z_klasy_a()
{
return 1;
}
szumek
  • Rejestracja: dni
  • Ostatnio: dni
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.

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.