Это оператор разрешения области видимости. Он нужен, когда вы хотите обратиться к статическим функциям-членам извне класса или определить функции-члены вне класса. Он также нужен при использовании типов или функций из пространства имён (например, std::cout, std::cin, std::string и т. д.)

Пример

class Test{ public: Test(); static void print() { std::cout<<"Test"<<endl; //Используйте :: с пространствами имён } private: int a; }; Test::Test() : a(1) //Используйте :: при определении {} Test::get(); //Используйте :: при использовании статических функций-членов