so in C++ you can instantiate objects using the new keyword or otherwise...
Object o = new Object();
but you can also just do
The first type:
Object* o = new Object();
Will create a new object on the heap and assign the address to o. This only invokes the default constructor. You will have to manually release the memory associated with the object when done.
The second type:
Object o = Object();
Will create an object on the stack using the default constructor, then invoke the assignment constructor on o. Most compilers will eliminate the assignment call, but if you have (intended or otherwise) side-effects in the assignment operation, you should take that into account. The regular way to achieve creating a new object without invoking the assignment operation is:
Object o; // Calls default constructor