First let me ask a general question:
Your first paragraph details how C++ is flexible and allows you to express many different programs.
Your second paragraph asks why C++ doesn't allow a programmer to enforce a highly stringent limitation that is of questionable benefit (when you can simply mark all the members const
to achieve almost the same result).
Let us each draw our own conclusions from this dichotomy. :)