Deqing
Deqing

Reputation: 14652

Is member value in the class initialized when an object is created?

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?

Upvotes: 0

Views: 2387

Answers (2)

Kerrek SB
Kerrek SB

Reputation: 477660

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_()
    {
    }

    // ...
};

Upvotes: 6

Michael M.
Michael M.

Reputation: 2584

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*));

Upvotes: 0

Related Questions