这个问题的标题很拗口。基本上,我正在创建一个在向量中使用双向链表的哈希表结构。当我使用重载的构造函数创建对象时,一切正常,但是使用默认构造函数会导致对象的状态在返回到 main 后变得时髦。
我的构造函数:
HashTable::HashTable()
{
HashTable(53);
}
HashTable::HashTable(int tableSize)
{
currentSize = tableSize;
table.resize(tableSize);
}
创建对象后设置断点
HashTable ht(size); //this works
HashTable ht; //this does not work
单步执行代码,我看到它调用了重载的构造函数,但是在返回 main 然后尝试使用表(仅使用默认构造函数时)后,向量的大小和变量 currentSize 出错了。
创建对象后,返回main之前:
currentSize = 53
table [size] = 53, [capacity] = 53, empty linked lists fill the vector
在 main 中调用ht.hash(value)
时,该对象现在具有:
currentSize = -858993460
table [size] = 0, [capacity] = 0, linked lists obviously gone.
什么会导致向量将自身重置为 0 并且我的私有 int currentSize 变得时髦,特别是因为代码路径都可以通过HashTable(int tableSize)
?