I\'m learning C++ from scratch, and as such I don\'t have an expert understanding of C. In C++, you can\'t cast a void pointer to whatever, and I understand the reasons behi
You can cast a void*
to another pointer in both languages. Perhaps you meant implicitly.
It's very convenient in C to not have to be explicit about it. In C++ we have templates, so to write generic code there's no need for void*
casting and whatnot. In C there is no choice. A generic container has to hold void*
to objects, and it's much easier to repeatedly say mydata* d = node;
then it is mydata* d = (mydata*)node;
.
So it's pretty much like you said. In C type safety in general didn't receive as much emphasis as it did in C++, especially when it came to void*
because it was suppose to be a simple generic pointer to whatever. There's no need for that in C++, so better make it explicit when you're dealing with it.