Technically speaking, there is no dereference of null occurring there. It *looks* like there is because of the "foo.bar" notation, but remember,calling a member function is not really dereferencing. It's just sugar for:foo.vtable[index_of_bar](foo);
But usually there's an class invariant.