Search code examples
c++c++11initializationinitializer

Default value of a struct member


(I'm sure this question has already been answered, I'm just not sure on the right words to use to ask it. If someone would tell me what the correct terminology is that would be awesome!)

I'm implementing a HashSet in C++ for a data structures class, and I have a question about C++ syntax regarding structs. Here is my code:

struct HashNode
{
    T value;
    HashNode* next = nullptr;
};

Will this code correctly initialize the next pointer to nullptr when new HashNode is called? If not, what is the value of next after new HashNode?


Solution

  • Will this code correctly initialize the next pointer to nullptr when new HashNode is called?

    Yes, it will be initialized to nullptr. This is in-class brace-or-equal initializer (default member initializer) (since C++11), it will be used if the member is omitted in member initializer list.

    Through a default member initializer, which is simply a brace or equals initializer included in the member declaration, which is used if the member is omitted in the member initializer list

    If a member has a default member initializer and also appears in the member initialization list in a constructor, the default member initializer is ignored.