A pointer can be assigned to another pointer if both pointers are of the same type. Otherwise, a cast operator (normally a
reinterpret_cast; discussed in Section 14.7) must be used to convert the value of the pointer on the right of the assignment to the pointer type on the left of the assignment. The exception to this rule is the pointer to void (i.e., void *), which is a generic pointer capable of representing any pointer type. Any pointer to a fundamental type or class type can be assigned to a pointer of type
void * without casting. However, a pointer of type
void * cannot be assigned directly to a pointer of another type—the pointer of type
void * must first be cast to the proper pointer type.