il #define?

mi aggiungo anch'io..
define:è più da c,non è tipizzata se non lo fai te esplicitamente(e non è molto bello),non ha uno scope e alcuni debugger al posto di visualizzarti la costante,ti visualizzano direttamente il nome..
const: è nuovo e più da c++,risolve i problemi sopracitati,ma x esempio non sempre può essere usata come dimensione di un array globale..inoltre non puoi usarlo per cambiare il codice durante la compilazione..e di solito non puoi usarlo nei case degli switch..tutto ciò perchè const viene visto come una variabile,anche se poi spesso il compilatore la fa sparire..e in alcuni casi non lavora troppo bene coi template,penso..