[
Note 3: 
 For example,
class A * A;
first specifies 
A to be the name of a class and then redefines
it as the name of a pointer to an object of that class
.This means that
the elaborated form 
class A must be used to refer to the
class
.Such artistry with names can be confusing and is best avoided
. — 
end note]