If I have a class named Object, what's the difference between creating an instance just like that:
Object var;
and:
Object* var = new Object();
?
Here you are creating var on the stack:
Object var;
So in the above, var
is the actual object.
Here you are creating var on the heap (also called dynamic allocation):
Object* var = new Object()
When creating an object on the heap you must call delete
on it when you're done using it. Also var
is actually a pointer which holds the memory address of an object of type Object
. At the memory address exists the actual object.
For more information: See my answer here on what and where are the stack and heap.
This:
Object var();
Is a function declaration. It declares a function that takes no arguments and returns an Object
. What you meant was:
Object var;
which, as others noted, creates a variable with automatic storage duration (a.k.a, on the stack).
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With