¿Por qué agregar un '0' a un dígito int permite la conversión a un carácter?

He visto ejemplos de esto en todo el lugar:

int i = 2;
char c = i + '0';
string s;
s += char(i + '0');

Sin embargo, todavía no he visto una explicación de por qué agregar el cero permite la conversión.