c++ - Memory allocation and copy construcors -


https://stackoverflow.com/a/3278636/462608

class::class( const char* str ) {     stored = new char[srtlen( str ) + 1 ];     strcpy( stored, str ); } 

in case member-wise copying of stored member not duplicate buffer (only pointer copied)

but here memory being allocated new. why still said pointer copied not whole buffer?

in class class have pointer named stored. when instance of class copied, e.g.

class a("hello"); class b = a;  // copying 

then pointer stored copied, have 2 objects same pointer. if delete pointer in 1 object other object still have pointer point unallocated memory.

that's why need create copy constructor:

class(const class& other) {     stored = new char[strlen(other.stored) + 1];     strcpy(stored, other.stored); } 

now if have above copy constructor, when copying happening in first code snippet, new string allocated, , contents other instance copied. of course, need copy-assignment operator used when assigning between 2 object instances:

class& operator=(const class& other); 

Comments

Popular posts from this blog

html - How to style widget with post count different than without post count -

How to remove text and logo OR add Overflow on Android ActionBar using AppCompat on API 8? -

javascript - storing input from prompt in array and displaying the array -