String class in C++ Without copy constructor
#include<iostream>
#include<cstring>
using namespace std;
class String
{
private:
 char *s;
 int size;
public:
 String( char *str = NULL); // constructor
 void print() { cout << s << endl; }
 void change(const char *); // Function to change
};
String::String( char *str)
{
 size = strlen(str);
 s = new char[size+1];
 strcpy(s, str);
}
void String::change(const char *str)
{
 delete [] s;
 size = strlen(str);
 s = new char[size+1];
 strcpy(s, str);
}
int main()
{
 String str1("mice");
 String str2 = str1;
 str1.print(); // what is printed ?   mice
 str2.print(); // what is printed ?   mice
 str2.change("Udupi");
 str1.print(); // what is printed now ? Udupi
 str2.print(); // what is printed now ? Udupi
 return 0;
}
String class in C++ With copy constructor
#include<iostream>
#include<cstring>
using namespace std;
class String
{
private:
 char *s;
 int size;
public:
 String( char *str = NULL); // constructor
 String( String &ss);  //copy constructor
 ~String() { delete [] s; }// destructor
 void print() { cout << s << endl; }
 void change(const char *); // Function to change
};
String::String( String &ss)  
{
    size = strlen(ss.s);
 s = new char[size+1];
 strcpy(s, ss.s);
}
String::String( char *str)
{
 size = strlen(str);
 s = new char[size+1];
 strcpy(s, str);
}
void String::change(const char *str)
{
 delete [] s;
 size = strlen(str);
 s = new char[size+1];
 strcpy(s, str);
}
int main()
{
 String str1("mice");
 String str2 = str1;
 str1.print(); // what is printed ?   mice
 str2.print(); // what is printed ?   mice
 str2.change("Udupi");
 str1.print(); // what is printed now ? mice
 str2.print(); // what is printed now ? Udupi
 return 0;
}
Sir some explanation pictures would have been better.
ReplyDelete