Справочное руководство по C++

B6_6.cxx.

#include ‹stream.hxx›

Extern int strcpy(char*, char*);

Extern int strlen(char *);

Struct string {

 char *p;

 int size;

 inline string(int sz) { p = new char[size=sz]; }.

 string(char *);

 inline ~string() { delete p; }.

 void operator=(string&);

 string(string&);

};

String::string(char* s).

{

 p = new char [size = strlen(s) + 1];

 strcpy (p,s);

}

Void string::operator=(string& a).

{

 if (this == &a) return;

 delete p;

 p=new char[size=a.size];

 strcpy(p,a.p);

}

String::string(string& a).

{

 p=new char[size=a.size];

 strcpy(p,a.p);

}

String g(string arg).

{

 return arg;

}

Main().

{

 string s = "asdf";

 s = g(s);

 cout ‹‹ s.p ‹‹ "\n";

}