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;
}
 
     
     
     
    