DAB> This is the so-called "class instance variable", which is really just DAB> "an instance variable that happens to belong to a Class object". It's DAB> common to use the phrase "class instance variable", but it's just a DAB> way of clarifying what you mean. There's no separate "class instance DAB> variable" language-level construct. So ... let's see if I get this. class X # "equivalent" to C++'s # class X { # protected: # static sometype at_at_x = 3; # }; @@x = 3 # "equivalent" to C++'s # class X { # private: # sometype at_x; # X::X() {at_x =3;} # }; # at_x is not "inheritable" since it is private. @x = 3 # No equivalent notion in C++. It's just a temporary variable x = 3 end - - - - It appears to me that "class" is a jumble of two kinds of very different semantics. There is the notion of a class as a template for instances of the class. Then there is a very different notion of a sorta static class that has it's own variables that do not propagate to instances; and may (@@x) or may not (@x) propagate and be accessile to static subclasses inherited from the static superclass. A lot to wrap one's head around. I assume that there are good design reasons to jumble these two concepts together in the semantics of "class".