私は自分の文字列クラスを作成していますが、これを除いてすべて正常に動作operator +=
しています:これを実行できるように演算子をオーバーロードしようとしています:
string s1 = "Hello", s2 = " World";
s1 += s2;
だからこれは私が試したものです:
// In the string class,
string& operator +=(string const& other)
{
using std::strcpy;
unsigned length = size() + other.size() + 1; // this->size() member
char *temp = new char[length]; // function and a "+ 1" for the
// null byte '\0'
strcpy(temp, buffer);
strcpy(temp, other.data());
delete[] buffer;
buffer = new char[length];
strcpy(buffer, temp); // copy temp into buffer
return *this;
}
しかし、私のプログラムでは、上記のメインのコードを使用すると、印刷後に出力が得られません。エラーも発生しません(実行時エラーもありません)。これはなぜですか? また、この実装を修正するにはどうすればよいですか?
注:使用できることはわかってstd::string
いますが、自分でこれを行う方法を学びたいです。