I am writing my own String.h for learning purpose.
I am trying to implementing the following :
String s = "Hello World"; //This works 
s += " Hi"; // Should be "Hello World Hi" 
The following is my operator overload:
String& operator+=(const char* rhs)
    {
        size_t length = m_length + strlen(rhs);
        char* string = new char[length + 1];
        strncpy_s(string, length + 1, m_string, m_length);
        String s = string;
        std::cout << "Concat String : " << s << "\n"; //This prints correctly
        return s;
    }
And my constructor :
String(const char* string)
    {
        if (!string)
        {
            m_length = 0;
            m_string = new char[0];
        }
        else
        {
            m_length = strlen(string);
            m_string = new char[m_length + 1];
            strncpy_s(m_string, m_length+1,string,m_length);
        }
    }
This is my << overload :
std::ostream& operator<<(std::ostream& out, String& string)
{
    out << string.m_string;
    return out;
}
The issue : When I print cout << s; in the operator+= it is printing correctly but in the main function where I am calling it :
String s = "Hello World";
s += " Hi";
std::cout << s;
It is coming as "Hello World".
Please help. I am still on my learning path. Thanks in advance.
