如何在C ++中取消初始化对象?

瑞奇

我不是100%确定我为此权利写了标题,所以这就是我想要做的...

我有一个像这样定义的类...

class Animal
{
public:
    Animal() : m_name("New Animal")
    {
    }

    Animal(const std::string& name) : m_name(name)
    {
    }

    Animal(const Animal& animal) : m_name(animal.name)
    {
    }

private:
    const std::string name;
};

然后像这样初始化此类的对象...

Animal* m_animal = new Animal("Leroy");

在我程序的某个时刻,用户将单击一个按钮,该按钮将导致m_animal变为空。意味着名为Leroy的宠物不应该再存在。

我以为可以使用delete m_animal,但是一旦调用它,就不能再使用m_animal而不引起内存分配错误。

因此,我想我的问题是……由于名为Leroy的宠物没有被删除,我是否会使用以下代码导致内存泄漏……如果是的话,还有哪些方法可以完成此任务?

m_pet = NULL;

整个过程看起来像这样...

Animal* m_animal = new Animal("Leroy");
Animal* m_animal2 = new Animal("Boo");
std::cout << m_animal.name << endl;
m_animal = NULL;
m_animal = new Animal(m_animal2);
std::cout << m_animal.name << endl;
格雷格·休吉尔

确实想使用delete m_animal;你可以这样做:

std::cout << m_animal.name << endl;
delete m_animal;
m_animal = new Animal(m_animal2);
std::cout << m_animal.name << endl;

打完电话后delete m_animal,就可以不再使用什么m_animal指着,但你当然可以使用m_animal再次指针。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章