Chciałam tylko poznać różnicę między. operator i :: operator?jaka jest różnica między operatorem kropki a operatorem rozdzielczości zakresu
Odpowiedz
Ta pierwsza (kropka, .
) służy do uzyskiwania dostępu do elementów obiektu, druga (dwukropek, ::
) jest używana do uzyskiwania dostępu do członków przestrzeni nazw lub klas.
Rozważ poniższe ustawienia.
namespace ns {
struct type
{
int var;
};
}
W tym przypadku, w odniesieniu do struktury, która jest członkiem nazw, należy użyć ::
. Aby uzyskać dostęp do zmiennej w obiekcie typu type
, należy użyć .
.
ns::type obj;
obj.var = 1;
Jeśli używasz wskaźnik do instancji obiektu, będziesz miał dostęp do członków obiektu za pomocą -> w miejscu „kropką”
Nie musisz * musieć * - 'p-> m' jest po prostu syntaktycznym cukrem dla' (* p) .m';) – fredoverflow
Innym sposobem, aby myśleć o Quad kropka "::" to scope resolution operator.
W przypadkach, gdy istnieje więcej niż jeden obiekt w zakresie, które mają tę samą nazwę. Jawnie zadeklarować, który z nich korzystać: ''
std::min(item, item2);
lub
mycustom::min(item, item2);
operatora kropka jest wywołanie metody i atrybuty instancji obiektu
Myobject myobject;
myobject.doWork();
myobject.count = 0;
// etc
Nie pytano, ale jest inny operator w użyciu, jeśli instancja obiektu jest tworzony dynamicznie new
, to operator strzałka „->”
więc, jeśli używamy obiektu, aby uzyskać dostęp do czegoś, to musimy użyć operatora kropki, a jeśli używamy nazwy klasy, to musimy użyć ::, prawda ?, czy możesz podać przykład również, Jeśli nie masz nic przeciwko! – defiant
@oDx, to jest poprawne, więc jeśli masz zmienną statyczną lub funkcję klasy, użyjesz "::" z nazwą klasy do odniesienia się do nich, natomiast jeśli masz funkcję członka lub zmienną członka, możesz użyłby "." z nazwą instancji klasy. –