To make my code more readable, i have a local variable inside a function, that takes a specified element from an array, like this:
Element* elements = new Element[10];
void doSomething(int index) {
Element element = elements[index];
// do things with that element
}
What happens here: is element an independent copy of elements[index] that gets destroyed at the end of the function? From what I've tested, it seems like it, as changes in element don't affect element[index], however, I'd like to know what's happening behind the scenes. Does the assignment of element call an implicit copy constructor?
Yes, that's exactly what happens (although this is an initialisation, not an assignment).
You've declared Element
to be an object, so it's a separate object from any other Element
. It's initialised by copying its initialiser elements[index]
. If you haven't delcared a copy-constructor, then it uses the implicit one, copying each member.
If you wanted to modify the element in the array, then you'd want a reference:
Element & element = elements[index];
^
Collected from the Internet
Please contact [email protected] to delete if infringement.
Comments