问题
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?
回答1:
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_()
{
}
// ...
};
回答2:
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*));
来源:https://stackoverflow.com/questions/18120162/is-member-value-in-the-class-initialized-when-an-object-is-created