Perché qualcuno dovrebbe usare #define per definire le costanti?

È una domanda semplice, ma perché qualcuno dovrebbe usare #define per definire le costanti?

Qual è la differenza tra

#define sum 1 e const int sum = 1;