Ask coding questions

← Back to all posts
What is the difference between declaring class as normal vs declaring it as a pointer?
Qaimaq (0)

Are there any difference between them? I tried to test it out, but they are giving me the identical results so what is the pro and cons of one another?

CCow *cow = new CCow();


CCow cow;

19wintersp (1120)

A pointer is a pointer towards a region of memory where the data is stored. A "regular" one just holds the data in itself. The difference in your case is where they are stored: the "regular" one is stored on the stack, and the pointer one is stored on the heap. If you were to pass one of these instances to a function, for example, and the function attempted to modify them, the "regular" one would become a copy within the function (cloning by value) because the literal data is being passed, whereas the pointer one would remain a pointer to the original (cloning by reference) because the location of the literal data is being passed. Objects allocated with new must also be deallocated with delete because they are not cleared when the function exits.