创建对象时是否初始化了类中的成员值?

时间:2013-08-08 07:21:38

标签: c++ initialization member c++03

我正在写一个哈希类:

struct hashmap {
  void insert(const char* key, const char* value);
  char* search(const char* key);
 private:
  unsigned int hash(const char* s);
  hashnode* table_[SIZE]; // <--
};

由于insert()在插入新对时需要检查table [i]是否为空,所以我需要在启动时将表中的所有指针设置为NULL。

我的问题是,这个指针数组table_会自动初始化为零,还是我应该手动使用循环在构造函数中将数组设置为零?

2 个答案:

答案 0 :(得分:6)

table_数组在您当前的设计中将未初始化,就像您说int n;一样。但是,您可以在构造函数中对数组进行值初始化(从而对每个成员进行零初始化):

struct hash_map
{
    hash_map()
    : table_()
    {
    }

    // ...
};

答案 1 :(得分:0)

您必须将所有指针都设置为NULL。 您不必使用循环,可以在构造函数中调用:

memset(table_, 0, SIZE*sizeof(hashnode*));