C++ ではお馴染みの代入演算子ですけど、通常は、左辺の値を右辺の値で置き換えるという動作をします。 従来からの C++ のクラスの代入演算子では、左辺のクラスが右辺の値を受け取って処理をするような定義になっています。 右辺の値は書き換えられないので、たとえば右辺の値を左辺が引き継いで使用するとき、右辺の値がポインタだったりする場合には、大抵はどんなときでも、右辺の値を新しい値としてまるごと複製しなければいけなくなります。 このとき、もしもそのまま右辺のポインタを左辺に設定してしまうと、左辺と右辺の両方で同じポインタを使ってしまうため、たとえば左辺と右辺のどちらかが解放されるときに、もう片方でも使用中のポインタが示すメモリを開放してしまう恐れがあります。 そのため、ポインタが指す先のメモリを丸ごとコピーして新しい値として設定する必要があるのですが、それにかかるコストが大きい場合に問題になる