我使用方法insert()
将Image对象传递给哈希表。
htImages.insert(WALL_UP_CLOSE, imgWalls[WALL_UP_CLOSE]);
如您所见,我通过引用将对象传递给Value。
void insert(const Key &key, const Value &value)
{
Entry entry;
int index;
// Build up entry structure
entry.m_key = key;
entry.m_value = value;
// Build the insertion index
index = m_hash(key) % m_size;
// Insert the value
m_table[index].append(entry);
m_count++;
}
但是,一旦此函数在最后一行结束,就会调用下面的析构函数。
Image::~Image()
{
glDeleteTextures(1, &m_handle);
refCount--;
}
我的偏好是没有调用析构函数。我通过引用传递它,那么为什么要调用析构函数呢?
答案 0 :(得分:3)
你有一个Entry
类型的局部变量,它会在函数末尾自动销毁。
当它被销毁时,析构函数会为每个子对象运行。
可能entry.m_value = value;
正在复制某些东西,需要清理额外的副本。