When a class friends a global function or a function from another class, the friended function will now have access to the private data members of the friending class. This feature should be used with great caution as it breaks the class protection mechanisms. A class can also friend another class. This allows the friended class full access to the friending class. This condition creates a conjoined class and breaks encapsulation.
Every class has a pointer to itself.
Using the this pointer to refer to object members. Static data members of classes are store in global scope and are shared by all instances of the class for which they are specified. Static members can server as instance counters Static class members must be initialized in a global area of the program.