このコードは私が書いたものではありません! クラス WebServer では、+=operator をオーバーロードします。このクラスは、動的に割り当てられた、WebPage *wp; として定義された WebPage (別のクラス、コンポジション) 型のオブジェクトの配列を使用します。
WebServer & operator +=( WebPage webPage ) {
WebPage * tmp = new WebPage [ count + 1];
for (int i = 0; i < count ; i ++)
tmp [i] = wp[i];
tmp [ count ++] = webPage ;
delete [] wp;
wp = tmp;
return * this ;
}
そのため、動的に割り当てられた WebPages の新しい配列を作成し、1 つのオブジェクト用に余分なスペースを確保します。次に、それらに wp が保持する値を割り当て、次に配列に追加したいオブジェクトを割り当てます。したがってdelete[] wp;
、プログラムを削除しても問題なく動作します。では、そのコード行を削除するとどうなるでしょうか? また、wp = tmp、それはどういう意味ですか? wp はその動的な新しい名前にすぎないため、クラス内の名前に適していますが、メモリ内の場所は同じですか? または?