调用我的返回方法会调用我的析构函数,这会导致程序崩溃

时间:2015-10-21 07:25:22

标签: c++

希望我的代码不要太愚蠢......

Index::Index() : m_first(""), m_count(0)
{
    m_ll = new LinkedList;
}
void TestClass::testMethod()
{
    if (getIndex(i).getCount() != 0)
    {
        //do stuff
    }
}
Index TestClass::getIndex(int num) const
{
    return m_index[num];
}
Index::~Index()
{
    delete m_ll;
}

这是真正涉及崩溃的代码。当我输入testMethod时,我有m_index [num],它包含一个指向m_ll的指针。它们完全有效。它返回m_index [num]之后,即使m_index [num]仍在使用中,它也会进入析构函数,因此我的程序崩溃了。我不明白为什么这么早就会调用析构函数。

1 个答案:

答案 0 :(得分:2)

dtor调用deletegetIndex按值返回。我的水晶球告诉我Index::Index()来电newIndex::Index(Index const&)没有。{/ p>