001: MyString

#include <iostream>
#include <string>
#include <cstring>
using namespace std;
class MyString {
    
    
 char * p;
public:
 MyString(const char * s) {
    
    
  if( s) {
    
    
   p = new char[strlen(s) + 1];
   strcpy(p,s);
  }
  else
   p = NULL;
 }
 ~MyString() {
    
     if(p) delete [] p; }
 MyString(const MyString &my)
 {
    
    
  if(my.getp()) {
    
    
   p = new char[strlen(my.getp()) + 1];
   strcpy(p,my.getp());
  }
  else
   p = NULL;
 }
 void Copy(const char * s)
 {
    
    
  if(!p)
  {
    
    
   p=new char[strlen(s)+1];
   strcpy(p,s);
  }
 }
 char * getp() const
 {
    
    
  return p;
 }
 friend ostream &operator<<(ostream& o,const MyString& my)
 {
    
    
  o<<my.getp();
  return o;
 }
 MyString& operator=(const MyString& my2)
 {
    
    
  if(!p)
  {
    
    
   delete [] p;
   p=new char[strlen(my2.getp())+1];
   strcpy(p,my2.getp());
  }
  else
  {
    
    
   p=new char[strlen(my2.p)+1];
   strcpy(p,my2.getp());
  }
 }
};
int main()
{
    
    
 char w1[200],w2[100];
 while( cin >> w1 >> w2) {
    
    
  MyString s1(w1),s2 = s1;
  MyString s3(NULL);
  s3.Copy(w1);
  cout << s1 << "," << s2 << "," << s3 << endl;
  s2 = w2;
  s3 = s2;
  s1 = s3;
  cout << s1 << "," << s2 << "," << s3 << endl;
 }
}

猜你喜欢

转载自blog.csdn.net/Warmmm/article/details/104603375
001