In my own string class(just for learning) i have overload of operator +
Do I need to clean the memory pointed by tmpPtr
?
String String::operator+(const String& rv) const
{
size_t newLength = length + rv.length;
char* tmpPtr = new char[newLength + 1];
strcpy(tmpPtr, ptr);
strcpy(tmpPtr + length, rv.ptr);
String S(tmpPtr);
delete[] tmpPtr;
return S;
}
Can i change this method this way?
String String::operator+(const String& rv) const
{
size_t newLength = length + rv.length;
char* tmpPtr = new char[newLength + 1];
strcpy(tmpPtr, ptr);
strcpy(tmpPtr + length, rv.ptr);
return S(tmpPtr);
}
If someone needs a constructor and a destructor:
String::String(const char* str)
{
setString(str, strlen(str));
}
String::String(const String& str)
{
setString(str.ptr, str.length);
}
void String::setString(const char* str, size_t size)
{
ptr = new char[size + 1];
strcpy(ptr, str);
length = size;
}
String::~String()
{
delete[] ptr;
}