«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > NULL против NULLPTR: Почему заменен нулевой указатель C ++?

NULL против NULLPTR: Почему заменен нулевой указатель C ++?

Опубликовано в 2025-02-26
Просматривать:224

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

null vs. nullptr: уточнение замены

в мире программирования C, существенное изменение произошло при введении Nullptr в C 0x, замена традиционного нуля. Эта замена вызвала любопытство, вызвав вопрос: почему это изменение было внедрено? как как «макрос» в стиле C, так и законное буквальное значение для типов указателей. Эта двусмысленность может привести к путанице, особенно при перегруженных вызовах функций. Рассмотрим следующий пример:

void f (int); void f (foo *); F (NULL); // неоднозначно, может быть либо вызов с введением Nullptr, эта двусмысленность была разрешена. Nullptr - это выделенный тип (std :: nullptr_t), который явно обозначает нулевый указатель. Это неявно конвертируется любому типу указателя, обеспечивая однозначное разрешение перегрузки.

, кроме того, NULL может быть ошибочно интерпретироваться как целочисленное значение, что приводит к потенциальным ошибкам. Замена NULL на nullptr устранил эту проблему, предоставив более четкое различие между значениями указателя и целыми числами. Значительные преимущества:

void f(int);
void f(foo *);

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

улучшенный тип Безопасность:

Как упоминалось ранее, явный тип Nullptr предотвращает непреднамеренные преобразования в целые числа. .

последовательный синтаксис: nullptr соответствует соглашению стандартной библиотеки C для использования «p 'в качестве суффикса для типов и значений, связанных с указателями, таких как типы итератора и интеллектуальных указателей.

]
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3