C++ overloading += operator in custom string class better implementation
You did a single-null-allocation correctly(ish) once:
if(str == nullptr){
    this-&gt;str = new char;
    *(this-&gt;str) = '\0';

and incorrectly a second time:
if(str == nullptr){
    this-&gt;str = new char;
    this-&gt;str = '\0';

This will produce a memory leak. That aside, if your compiler allowed this without yelling about incompatible types, that makes me sad.
Even then, as @TobySpeight indicates, the first style of allocation has a mismatch with your delete[] and also needs to follow array-like syntax.