Esto es el ámbito (scope). Si quieres referenciar funciones miembro estáticas fuera de la clase, o definir funciones miembro fuera de la clase, debes usarlo. También se usa para utilizar tipos o funciones en espacios de nombres (como: std::cout, std::cin, std::string, etc.)

Ejemplo

class Test{ public: Test(); static void print() { std::cout<<"Test"<<endl; //Usar :: para espacios de nombres } private: int a; }; Test::Test() : a(1) //Usar :: al definir {} Test::get(); //Usar :: al usar funciones miembro estáticas