#include #include using namespace std; class string { string(unsigned short); // Àü¿ë »ý¼ºÀÚ. char *itsstring; // µ¿ÀûÀ¸·Î ÇÒ´çÇÑ ¸Þ¸ð¸®ÀÇ ¼±µÎ¹øÁö¸¦ ³ªÅ¸³»´Â º¯¼ö, ¹®ÀÚ¿­ÀÇ ¼±µÎ¹øÁö¸¦ ³ªÅ¸³½´Ù. unsigned short itslen; // ¹®ÀÚ¿­ÀÇ ±æÀ̸¦ ³ªÅ¸³»´Â º¯¼ö. public: string(); // ±âº» »ý¼ºÀÚ. string(const char *const); string(const string &); // º¹»ç »ý¼ºÀÚ. ~string(); // ¼Ò¸êÀÚ. char & operator[](unsigned short offset); char operator[](unsigned short offset) const; string operator+(const string &); void operator+=(const string &); string & operator=(const string &); unsigned short getlen() const { return itslen;} // ¹®ÀÚ¿­ÀÇ ±æÀ̸¦ º¸°íÇÏ´Â ÇÔ¼ö. const char * getstring() const { return itsstring;} // ¹®ÀÚ¿­ÀÇ ¼±µÎ ¹øÁö¸¦ º¸°íÇÏ´Â ÇÔ¼ö. }; string::string() // ±âº» »ý¼ºÀڷμ­ ÀÚÀ¯ ±â¾ï°ø°£¿¡ 1byte ÀÇ ¸Þ¸ð¸®¸¦ ÇÒ´çÇϰí { // ³Î·Î ÃʱâÈ­ ½ÃŰ¸ç ¹®ÀÚ¿­ÀÇ ±æÀ̸¦ ³ªÅ¸³»´Â itslen À» 0 À¸·Î ÃʱâÈ­¤¿ itsstring=new char[1]; // ÇÑ´Ù. itsstring[0]='\0'; itslen=0; } string::string(unsigned short len) { itsstring=new char[len+1]; for(unsigned short i=0;iitslen) // offset °¡ ¹®ÀÚ¿­ÀÇ ±æÀ̺¸´Ù Å«Áö¸¦ ¿ì¼± °Ë»çÇϰí return itsstring[itslen-1]; else return itsstring[offset]; // offset À§Ä¡¿¡ ÀÖ´Â ¹®ÀÚ Çϳª¸¦ ¹ÝȯÇÑ´Ù. } // ¸®ÅÏÇüÀÌ ÂüÁ¶ ÇüÅÂÀ̹ǷΠÀ̰ÍÀº ÁÖÇÔ¼ö¿¡¼­ º¯È­¸¦ ½Ãų¼ö°¡ ÀÖ´Ù. char string::operator[](unsigned short offset) const // [] ¿¬»êÀÚÀÇ ÀçÁ¤ÀÇ ÇÔ¼ö·Î À§ÀÇ ÇÔ¼ö¿Í ±â´ÉÀÌ °°°í { // ¸®ÅÏÇü¸¹ÀÌ Æ²¸®´Ù. if (offset>itslen) return itsstring[itslen-1]; else return itsstring[offset]; } string string::operator+(const string &rhs) // °´Ã¼ + °´Ã¼¸¦ ±¸ÇöÇϱâ À§Çؼ­ + ¿¬»êÀÚ¸¦ ÀçÁ¤ÀÇÇÑ ÇÔ¼öÀÌ´Ù. { unsigned short totallen=itslen+rhs.getlen(); // totallen º¯¼ö°¡ Á¿ìÃø °´Ã¼ÀÇ ¹®ÀÚ¼ö¸¦ ÇÕÇѰªÀ» ±â¾ïÇϰí string temp(totallen); // Àü¿ë »ý¼ºÀÚ¸¦ È£Ãâ(?) ÇÏ¿© Àӽà °´Ã¼¸¦ ¸¸µé°í for(unsigned short i=0;i ÇÙ½É } int main() { string s1("initial test"); cout<<"s1:\t"<