Reputation: 1674
I've seen many a times node classes in C++ being defined as:
struct node
{
whatever data;
struct node* pointerToAnyLinkedNode;
}
Now the question is why in line no. 4, 'struct' is written before node*? Does it have a special purpose? Because it does not pose any problem if I do not write it. I'm sorry if this question has a duplicate. I could not find one BTW.
Upvotes: 0
Views: 1117
Reputation: 385108
It's because this idiom originated in C (where struct types have to be named with struct
at the start) and a disturbingly large proportion of the C++ community copy/pastes their code from online tutorials, rather than actually thinking about what they're doing.
(This is also why you'll see struct tm
everywhere in C++ code, for no good reason.)
In C++, the struct
keyword is redundant here.
To be fair, if you're writing a header and aiming for compatibility with C programs, that's a good reason to leave it in.
Upvotes: 6