When you have a controller parameter which is a class, the DefaultModelBinder will try to create an instance of it and fill the properties with data from the request.
Even when there is not a single value for any property, it will create the object and pass it to your action method.
As stated in the comments, you can download the source of the MVC framework (look for the class DefaultModelBinder) or use a tool like reflector so take a look at the source.
If you have a specific problem, please post some code.