Creating Immutable Constants

Creating Immutable Constants

Although usually I don’t recommend using macros in C++ code, there are a few exceptions. One such exception is when you want to create a truly immutable constant. Consider the following constant:

   const int MAX=512;

Seemingly, MAX’s value can’t be changed because it’s const. However, on some platforms, a brute-force cast can change its value. For example:

   int *p = const_cast (&MAX); // remove constness  *p= 100; // attempt to change MAX through a pointer

Although any attempt to change a const object causes undefined behavior according to the C++ standard, some compilers let this hack pass unnoticed. To disable such possible hacks altogether, you can use a macro instead of a const object:

   #define MAX 512

This time, MAX can’t be changed.


Share the Post: