[Development] 0 vs. NULL
Matthew Woehlke
mwoehlke.floss at gmail.com
Fri Oct 9 18:59:48 CEST 2015
On 2015-10-09 11:51, René J.V. Bertin wrote:
> On Friday October 09 2015 13:58:37 Pocheptsov Timur wrote:
>> And yes, void * in C++ can be indeed considered generic, because
>> you can do this:
>>
>> int * p = ... void * pv = p;
>
> Coming from C I have some trouble with that concept of generic
> pointer. Once you're used that it implies not only "can be assigned
> to any type of pointer" but also "can be assigned any type of
> pointer" it's not so easy to remember which of the 2 properties has
> been dropped. I don't see any evident reason why in the above example
> it should be possible to assign p to pv without an explicit cast, but
> not the other way round.
For similar reason as:
struct A {...}; struct B : A {...};
B* b = ...;
A* a = b; // okay
B* also_b = a; // error
That is, 'void' is somewhat like a base class of everything (even POD
types), so an implicit upcast is allowed as always, but also as usual,
not an implicit downcast.
--
Matthew
More information about the Development
mailing list