Difference between “::” “.” and “->” in c++

Foo *foo = new Foo();
foo->member_var = 10;
foo->member_func();
Foo foo;
foo.member_var = 10;
foo.member_func();
int some_val = Foo::static_var;
Foo::static_method();
int max_int = std::numeric_limits<int>::max();