私は C++ Primer, 3rd Ed (Lippman and Lajoie) を読んでいますが、要素を追加するためのスペースを作るためにベクトルを再割り当てする必要がある場合は、push_back()
、要素は新しいスペースでコピー構築され、次に古い要素でデストラクタが呼び出されます。なぜこれが必要なのか混乱しています-なぜデータをビットごとにコピーできないのですか? 答えは動的メモリ割り当てに関係していると思いますが、現在の推論では、ベクトル要素が動的メモリを処理しても、要素に実際に格納されているデータはポインターになります。つまり、ビット単位のコピーでは、それらが指す場所が保持されます。問題はありません。要素が指す動的に割り当てられたメモリの再配置が問題になることはわかりますが、これはポインターを無効にするためですが、ベクトルの再配置にはそれを行う理由がないことがわかります。
誰かが少しずつ動かすべきではないクラスの簡単な例を教えてもらえますか?