The Political Economy of C++ Keywords
Classes are an inevitable human condition.
C++ is not merely a programming language. It is a class system expressed in reserved words.
Consider the evidence. At the top of the hierarchy sits private - the default access specifier for classes. Not public. Not even protected. The language’s very grammar assumes that resources belong to the few, and access must be explicitly granted downward. Bjarne didn’t design a language; he designed the House of Lords.
Then there is protected - the keyword of hereditary privilege. You cannot earn protected access through merit or friendship. You must inherit it. The protected member is the trust fund of C++: invisible to the public, inaccessible to outsiders, but freely available to anyone born into the right family. A derived class need not demonstrate competence. It need only exist in the correct lineage.
public, meanwhile, is the keyword of the commons - and like the commons, it is treated with suspicion. “Why would you make that public?” senior engineers ask, in the same tone that landed gentry once asked why the peasants needed libraries. Every public interface is a concession, grudgingly offered, hedged with const qualifiers like terms and conditions nobody reads.
friend is the most politically honest keyword in the language. It bypasses all access control entirely. Not through inheritance, not through public interface, not through any mechanism the type system can audit. A friend simply knows people. A friend declaration is a lobbyist with a keycard - formally external to the class, yet with full access to its private members. There is no acquaintance keyword. No colleague. You are either a friend or you are nobody.
static is the civil service - allocated once, persisting forever, shared across all instances, belonging to no one in particular. It exists whether you want it to or not. It outlives the objects that use it. It is impossible to fire.
virtual is the campaign promise: a function that claims to do one thing but whose actual behavior is determined at runtime by whoever currently holds power. The base class declares intent. The derived class delivers reality. The two rarely match, and the vtable lookup cost is passed on to the taxpayer.
explicit exists solely because the language’s implicit conversions were silently reclassifying objects into categories they never consented to join - a phenomenon so perfectly analogous to gerrymandering that I will not belabor the point.
volatile is the conspiracy theorist of the type system: it insists that reality might change at any moment through forces the compiler cannot see, and demands that everyone else accommodate its paranoia.
And at the bottom, mutable - the keyword that lets you modify something even when you promised not to. It is the only keyword that openly admits the system’s constraints are optional for those who know the right syntax. In any other context, we would call this corruption. In C++, we call it “logical constness.”
The revolution will not compile.


This is both funny and a little disturbing.