私は小さなソフトウェアをプログラミングして、ヒープ上に新しいオブジェクトを作成したいと考えていました。したがって、クラスメンバー関数では
void gShop::CreateCustomer(int type, int number)
{
vSlot[number] = new gCustopmer(type);
vSlot[number]->itsContactToShop=itsShopNumber;
vSlot[number]->itsNumber=number;
}
ここで、vSlot は顧客オブジェクトへのポインターのベクトルです。私は本質的に(ここでは省略された)クラスgShopを持っています:
class gShop : public gBranch
{
public:
gShop(): vSlot(100){}
~gShop(){}
std::vector <gCustomer*> vSlot;
...
}
そして主に、メンバー関数を呼び出して新しい顧客を作成します..
vShop[0].CreateCustomer(TYPE_M20, 1);
vShop[0].CreateCustomer(TYPE_F40, **2**);//EDIT:typo previously here. I intend to create customers by reading a file later on.
std::cout<< "1" << vShop[0].vSlot[1]->itsTypeString << std::endl;
std::cout<< "2" << vShop[0].vSlot[2]->itsTypeString << std::endl;
「ヒープ」に「新しい」2つのオブジェクトを作成したことを知っています(用語を正しく処理すれば、正式な教育を受けていないプログラミングは初めてで申し訳ありません)。また、そのオブジェクトへの2つのポインターがベクトル内に格納されていますオブジェクトショップ[0]。
私の質問は、新しいものごとに削除があるということわざを聞いたことです。このオブジェクトをどこで削除する必要がありますか? プログラムで作成したショップや顧客オブジェクトを削除するつもりはありません。
第二に、メモリ リークを引き起こさないという点で、このコードは今のところ大丈夫ですか? メンバー関数クラス内で新しいオブジェクトを作成したことを少し心配しているので、gShop へのデストラクタで削除を実装し、ポインターを NULL に設定する必要があります - 理論的なケースでは、shop[0] を削除する必要があります。 ?
どうもありがとう。