Referencovat NULL nejde, ale jde dereferencovat pointer s hodnotou NULL. Pokud udělám int *a = 0;
int b = *a;
tak mě to spadne na SIGSEG
Pokud ale napíšu
int *a = 0;
int &b = *a;
Pak program nespatne, ale vytvořím referenci na proměnnou int na adrese 0. On rozdíl mezi referencí a pointer není žádný, jde jen o syntaxtický zápis. Ale má určitý význam, a o tom to je.
Jinak NULL v C++ opravdu není, přesto jej radši používám, protože se to líp čte. Ještě raději používám
enum NilType {
nil = 0
}
A přiřazuji nil. Tohle je zajímavý u chytrých ukazatelů, které by jinak bylo nutné konstrukovat s parametrem int pro vytvoření neininicalizovaného chytrého ukazatele. Napsat konstruktor reagující na NilType je rozhodně lepší.
Zajímavý je, že s NULL i s nulou má C++ obecně docela problémy, například při instanciování šablon funkcí. Proto se myslím C++0x plánuje typovaný NULL. Čili zpět od obecné nuly k nějakému speciálnímu typu.