"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > NULL vs. Nullptr: Por que o ponteiro nulo C ++ foi substituído?

NULL vs. Nullptr: Por que o ponteiro nulo C ++ foi substituído?

Postado em 2025-02-26
Navegar:563

NULL vs. nullptr: Why Was the C   Null Pointer Replaced?

null vs. nullptr: esclarecendo a substituição

0x, substituindo o nulo tradicional. Essa substituição provocou curiosidade, provocando a pergunta: por que essa mudança foi implementada? como 'macro' no estilo C e um valor literal legítimo para os tipos de ponteiros. Essa ambiguidade pode levar à confusão, principalmente nas chamadas de função sobrecarregadas. Considere o seguinte exemplo:

void f (int); vazio f (foo *); f (nulo); // ambíguo, pode ser chamado

com a introdução de nullptr, essa ambiguidade foi resolvida. Nullptr é um tipo dedicado (std :: nullptr_t) que denota explicitamente um ponteiro nulo. É implicitamente conversível a qualquer tipo de ponteiro, garantindo uma resolução de sobrecarga inequívoca. Substituindo o NULL pelo Nullptr eliminou esse problema, fornecendo uma distinção mais clara entre os valores do ponteiro e os inteiros. vantagens significativas:

aprimorou o tipo Segurança:
void f(int);
void f(foo *);

f(NULL); // Ambiguous, could be either call

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3