הנה:
#include <iostream> using namespace std; class s1 { private: char *str; public: s1(s1 &str) { s1::str=new char[strlen(str.str)+1]; strcpy(s1::str,str.str); } s1(const char *str) { s1::str=new char[strlen(str)+1]; strcpy(s1::str,str); } s1() { str=new char[1]; str[0]='\0'; } ~s1() { delete []str; } operator const char *() { return (const char *)str; } void operator=(s1 &str) { delete []s1::str; s1::str=new char[strlen(str.str)+1]; strcpy(s1::str,str.str); } s1 operator+(int num) { char tmpStr[7]; int numLen; numLen=sprintf(tmpStr,"%d",num); char *tmpPtr=new char[strlen(s1::str)+numLen+1]; sprintf(tmpPtr,"%s%d",s1::str,num); s1 ret(tmpPtr); delete []tmpPtr; return ret; } }; ostream &operator<<(ostream &os,s1 &s) { os<<(const char *)s; return os; } int main() { s1 str1("h"); s1 str2; str2=str1+12; cout << str2 <<endl; return 0; }