I don't know about C++, and please someone correct me if what I say is wrong, but as far as I know:
Static type checking: The types of variables are determined at compile time. So the compiler knows for each variable what type that variable is.
Dynamic type checking: The types of variables are determined at run time. For example, python doesn't require you to declare types for variables. In python, something like