Você usa NULL ou 0 (zero) para ponteiros em C ++?
Nos primórdios do C ++, quando ele era parafusado na parte superior de C, não era possível usar NULL como ele foi definido como(void*)0
. Você não pode atribuir NULL a nenhum outro ponteirovoid*
, o que tornou inútil. Naquela época, aceitava-se que você usasse0
(zero) para ponteiros nulos.
Até hoje, continuei usando zero como um ponteiro nulo, mas os que estão ao meu redor insistem em usarNULL
. Eu pessoalmente não vejo nenhum benefício em dar um nome (NULL
) para um valor existente - e também gosto de testar ponteiros como valores verdadeiros:
if (p && !q)
do_something();
então usar zero faz mais sentido (como se você usarNULL
, você não pode usar logicamentep && !q
- você precisa comparar explicitamente comNULL
, a menos que você assumaNULL
é zero, caso em que por que usarNULL
).
Existe alguma razão objetiva para preferir zero sobre NULL (ou vice-versa), ou é tudo apenas uma preferência pessoal?
Edit: Eu deveria adicionar (e quis dizer originalmente) que com RAII e exceções, eu raramente uso ponteiros de zero / NULL, mas às vezes você ainda precisa deles.