Introduction
Sometimes a value might be missing or unknown. Using ? lets you say "this value can be there or it can be empty" safely.
When you get data from a form and the user might not fill it in.
When reading from a file or network where the value might not exist.
When a variable might not have a value yet but will later.
When you want to avoid crashes from missing values by checking first.