我不是100%肯定我措辭標題爲這個權利,使這裏就是我希望能夠做到......如何在C++中初始化一個對象?
我有被像這樣定義的類...
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的寵物不應該存在..
我假設我可以使用刪除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;
是的,這是一個內存泄漏 – James
使用'm_animal-> name'而不是'm_animal.name',因爲它的指針。 –