

- Trending Categories
Data Structure
Networking
RDBMS
Operating System
Java
iOS
HTML
CSS
Android
Python
C Programming
C++
C#
MongoDB
MySQL
Javascript
PHP
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
Are array members deeply copied in C++?
In case of C/C++, we can be able to assign a struct (or class in C++ only) variable to another variable of same type. At the time when we assign a struct variable to another, all members of the variable are copied to the other struct variable. In this case the question is arisen what happens when the structure consists of an array?
Now, we have to discuss about arrays. Main point to note is that the array members is not copied as shallow copy; compiler automatically accomplishes Deep Copy in case of array members. In the below program, struct test consists of array member str1[]. When we are able to assign st1 to st2, st2 has a new copy of the array. So st2 is not modified or changed when we modify or change str[] of st1.
Example
# include <iostream> # include <string.h> using namespace std; struct test{ char str1[20]; }; int main(){ struct test st1, st2; strcpy(st1.str1, "Tutorial Point"); st2 = st1; st1.str1[0] = 'X'; st1.str1[1] = 'Y'; /* Because copy was Deep, both arrays are different */ cout<< "st1's str = " << st1.str1 << endl; cout<< "st2's str = " << st2.str1 << endl; return 0; }
Output
st1's str = XYtorial Point st2's str = Tutorial Point
Therefore, in case of C++ classes, we don’t require to write our own copy constructor and assignment operator for array members because the default behavior is Deep copy for arrays.
- Related Questions & Answers
- Flattening a deeply nested array of literals in JavaScript
- Query deeply nested Objects in MongoDB
- Flexible Array Members in a structure in C
- When are static C++ class members initialized?
- Safely Accessing Deeply Nested Values In JavaScript
- What are static members of a C# Class?
- What are static members of a Java class?
- Comparing enum members in C#
- Comparing enum members in Java
- Static Data Members in C++
- Defining static members in C++
- Changing Class Members in Python?
- Setting object members in JavaScript
- Static Members in Ruby Programming
- What are the differences between class methods and class members in C#?