Output?
#include<iostream> #include<string.h> using namespace std;
class String
{ char *str;
public :
String( const char *s);
void change( int index, char c) { str[index] = c; }
char *get() { return str; }
}; String::String( const char *s)
{ int l = strlen (s);
str = new char [l+1];
strcpy (str, s);
} int main()
{ String s1( "geeksQuiz" );
String s2 = s1;
s1.change(0, 'G' );
cout << s1.get() << " " ;
cout << s2.get();
} |
(A) GeeksQuiz
geeksQuiz
(B) GeeksQuiz
GeeksQuiz
(C) geeksQuiz
geeksQuiz
(D) geeksQuiz
GeeksQuiz
Answer: (B)
Explanation: Since there is no copy constructor, the compiler creates a copy constructor. The compiler created copy constructor does shallow copy in line ” String s2 = s1;”
So str pointers of both s1 and s2 point to the same location.
There must be a user defined copy constructor in classes with pointers ot dynamic memory allocation.
Quiz of this Question