Является ли это плохой практикой программирования для #define констант в C++?
Да, потому что все макросы (которые являются то, что определяют #define
s), находятся в одном пространстве имен, и они действуют повсеместно. Переменные, включая const
-qualified variables, могут быть инкапсулированы в классы и пространства имен.
Макросы используются в C, потому что в C const
-qualified переменная на самом деле не является константой, это просто переменная, которая не может быть изменена. A const
-qualified переменная не может отображаться в постоянном выражении, поэтому ее нельзя использовать как размер массива, например.
В С ++ const
-qualified объектом, который инициализируется с постоянным выражением (например, const int x = 5 * 2;
) является константы и может быть использован в постоянном выражении, так что вы можете и должны использовать их.
'T' не обязательно будет использовать память после компиляции программы. – GManNickG