Это оператор разрешения области видимости. Он нужен, когда вы хотите обратиться к статическим функциям-членам извне класса или определить функции-члены вне класса. Он также нужен при использовании типов или функций из пространства имён (например, 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(); //Используйте :: при использовании статических функций-членов