Uczę się C++ i nigdy nie mogę powiedzieć, kiedy potrzebuję użyć ::
. Wiem, że muszę użyć std::
przed cout
i cin
. Czy to oznacza, że wewnątrz pliku iostream
programiści, którzy go utworzyli, stworzyli przestrzeń nazw o nazwie std
i umieścili funkcje w przestrzeni nazw o nazwie std
? Kiedy utworzyłem nową klasę, która nie jest w tym samym pliku co main()
z jakiegoś powodu, muszę dodać ::
.Używanie :: w C++
Na przykład, jeśli utworzę class
o nazwie A
, dlaczego muszę umieścić A::
przed funkcją, którą wykonuję, mimo że nie umieściłem jej w nazwie? Na przykład void A::printStuff(){}
. Jeśli utworzę funkcję w main
, dlaczego nie muszę wstawiać main::printStuf{}
?
Wiem, że moje pytanie jest prawdopodobnie mylące, ale czy ktoś mógłby mi pomóc?
A fine pytanie, ale trochę zbyt szeroki (IMO). Nazywa się to operatorem rozdzielczości, a wyszukiwanym terminem dalszej nauki jest * zasięg *. Wszystkie te nazwy ('cout', funkcje składowe' A') są zdefiniowane w * zakresach * i musisz rozwiązać zasięg (to znaczy powiedzieć kompilatorowi, gdzie szukać) za pomocą '::'. – GManNickG
Prefiksem dla '::' może być zarówno przestrzeń nazw, jak i klasa. Ponieważ 'main' nie jest ani (jest to funkcja),' main :: printStuff' byłoby niepoprawne. –
:: daje także pojęcie własności, gdy definicja jest częścią klasy lub przestrzeni nazw, powinieneś użyć ::, aby uzyskać do niej dostęp ... nie do końca, ale to daje ci poczucie. –