C++で動的メモリ割り当てを行うクラスを定義した時は、代入演算子と copy constructor を定義しておく。これらが定義されていない場合、 このクラスを使うプログラム中で、これらを(暗黙的であっても)使うと default の copy constructor や代入演算子が使われるため、compile エラーとはならずに実行時に障害が発生する。実装例を示す。
class MyString { public: MyString(); MyString(const MyString& from); ~MyString(); MyString& operator=(const MyString& from); private: size_t length; char* buf; }; MyString::MyString() { length = 0; buf = NULL; } MyString::MyString(const MyString& from) { size_t i; length = from.length; buf = new char [length + 1]; for( i = 0; i < length; i++ ) buf[i] = from.buf[i]; buf[length] = 0; } MyString::~MyString() { delete [] buf; } MyString& MyString::operator=(const MyString& from) { size_t i; if( &from == this ) return *this; delete [] buf; length = from.length; buf = new char [length + 1]; for( i = 0; i < length; i++ ) buf[i] = from.buf[i]; buf[length] = 0; return *this; }