私は、知識を学び、固めるためだけに、独自の文字列クラスを作成しています。std::string で移動セマンティクスを使用するコンストラクターが必要な場合を除いて、すべてが機能しています。
コンストラクター内で std::string データ ポインターなどをコピーして null にする必要があります。文字列が指すデータを削除せずに、空ではあるが有効な状態のままにしておく必要があります。
これまでのところ、私はこれを持っています
class String
{
private:
char* mpData;
unsigned int mLength;
public:
String( std::string&& str)
:mpData(nullptr), mLength(0)
{
// need to copy the memory pointer from std::string to this->mpData
// need to null out the std::string memory pointer
//str.clear(); // can't use clear because it deletes the memory
}
~String()
{
delete[] mpData;
mLength = 0;
}