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