问题
(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
?
回答1:
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.
来源:https://stackoverflow.com/questions/37369924/default-value-of-a-struct-member