I don't understand the first part of your question, but the second I think I can answer. Declaring an instance (object) of a particular class to be a pointer, is to make use of the Free Store (Heap RAM). Object pointers give great flexability to your program, because Heap RAM allocation is "dynamic", it occurs while your program is running. This is especially beneficial for programs like Air Traffic Control software. You do not know exactly how many airplane objects will be visible on a radar scope at any given moment when your writing the code for the program, Heap allocation with object pointers solves this problem...

class Airplane { ... };

Airplane * p1 = new Airplane; // dynamic Heap allocation...

p1 now points to an airplane object on the Heap (a RAM address)