Is member value in the class initialized when an o

2020-05-09 10:45发布

I'm writing a hash class:

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]; // <--
};

As insert() need to check if table[i] is empty when inserting a new pair, so I need all pointers in the table set to NULL at start up.

My question is, will this pointer array table_ be automatically initialized to zero, or I should manually use a loop to set the array to zero in the constructor?

2条回答
成全新的幸福
2楼-- · 2020-05-09 10:57

The table_ array will be uninitialized in your current design, just like if you say int n;. However, you can value-initialize the array (and thus zero-initialize each member) in the constructor:

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

    // ...
};
查看更多
冷血范
3楼-- · 2020-05-09 10:57

You have to set all pointers to NULL. You do not have to use a loop, you can call in the contructor :

memset(table_, 0, SIZE*sizeof(hashnode*));
查看更多
登录 后发表回答