我编写了一个小软件,想在堆上创建一个新对象。因此,在类成员函数中
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;
我知道我已经在“堆”上创建了“新”两个对象(如果我正确处理术语 - 抱歉,我对没有受过正规教育的编程很陌生)而且我还有两个指向存储在向量中的对象的指针对象商店[0]。
我的问题是我听说过这样的说法,即每一个新的都有一个删除。我必须在哪里删除这个对象?我实际上不打算删除程序中任何创建的商店或客户对象。
其次,就不会导致内存泄漏而言,这段代码到目前为止还可以吗?我有点担心我在成员函数类中创建了新对象,所以我应该尝试在 gShop 的析构函数中实现 delete 并将指针设置为 NULL - 在理论上我应该想要删除 shop[0] ?
非常感谢。