Per semplificare: hanno ragione e ti sbagli.
Raramente c'è un buon motivo per usare #define
per una costante in C ++. Sì, sono piuttosto orribili. In particolare, ignorano completamente gli ambiti per gli identificatori normali e hanno invece sempre l'ambito del file.
Puoi aggirare il problema (ad esempio, utilizzare i prefissi sui nomi che definisci per evitare collisioni) ma anche nel migliore dei casi non si adattano molto bene al resto della lingua.
Sospetto che tu stia pensando che sembra più ordinata è più una questione di assuefazione che di qualsiasi superiorità intrinseca - quando ho iniziato a spostarmi da C a C ++ tendevo a provare la stessa sensazione. Puramente intellettualmente ho potuto capire i punti che sono stati sollevati, ma emotivamente sembravano semplicemente sbagliati. Per un po 'ho pensato che fosse sciocco cambiare qualcosa che aveva funzionato e trovare per sempre. Ho dovuto davvero forzare me stesso a usare const
invece, e all'inizio non ci credevo veramente - ma abbastanza velocemente non mi ci sono abituato, ma ho finito per ammettere che era davvero meglio.