Mega Code Archive
Friendly operator+
#include
#include
using namespace std;
class String{
public:
String();
String(const char *const);
String(const String &);
~String();
char & operator[](int offset);
char operator[](int offset) const;
String operator+(const String&);
friend String operator+(const String&, const String&);
void operator+=(const String&);
String & operator= (const String &);
int GetLen()const { return itsLen; }
const char * GetString() const { return itsString; }
private:
String (int);
char * itsString;
unsigned short itsLen;
};
String::String()
{
itsString = new char[1];
itsString[0] = '\0';
itsLen=0;
}
String::String(int len)
{
itsString = new char[len+1];
for (int i = 0; i<=len; i++)
itsString[i] = '\0';
itsLen=len;
}
String::String(const char * const cString)
{
itsLen = strlen(cString);
itsString = new char[itsLen+1];
for (int i = 0; i itsLen)
return itsString[itsLen-1];
else
return itsString[offset];
}
char String::operator[](int offset) const
{
if (offset > itsLen)
return itsString[itsLen-1];
else
return itsString[offset];
}
String String::operator+(const String& rhs)
{
int totalLen = itsLen + rhs.GetLen();
String temp(totalLen);
int i, j;
for (i = 0; i