On Thursday, October 04, 2012 13:14:00 Alex Burton, @gmail.com wrote: > On Saturday, 15 September 2012 at 21:30:03 UTC, Walter Bright > > wrote: > > On 9/15/2012 5:39 AM, Henning Pohl wrote: > >> The way D is dealing with classes reminds me of pointers > >> because you can null > >> them. C++'s references cannot (of course you can do some nasty > >> casting). > > > > Doing null references in C++ is simple: > > > > int *p = NULL; > > int& r = *p; > > > > r = 3; // crash > > IMHO int * p = NULL is a violation of the type system and should > not compile. > NULL can in no way be considered a pointer to an int.
Um. What? It's perfectly legal for pointers to be null. The fact that *p doesn't blow up is a bit annoying, but it makes sense from an implementation standpoint and doesn't really cost you anything other than a bit of locality between the bug and the crash. > In the same way this should fail: > Class A > { > > } > A a; And why would this fail? It's also perfectly legal. - Jonathan M Davis