Я читал C++ FAQ -"8.6 -Когда следует использовать ссылки, а когда указатели? "и, в частности, это утверждение:
Use references when you can, and pointers when you have to.
...
The exception to the above is where a function's parameter or return value needs a "sentinel" reference — a reference that does not refer to an object. This is usually best done by returning/taking a pointer, and giving the NULL pointer this special significance (references must always alias objects, not a dereferenced NULL pointer).
Из того, что я видел, потребность в "дозорной" ссылке действительно часто является причиной использования указателей вместо ссылок. Мне интересно :, почему в C++ нет специального «значения NULL» для ссылок? Кажется, это сделало бы указатели почти ненужными, что решило бы многие проблемы.
Так почему же это не было частью спецификации языка?
Изменить:
Я не уверен, что мой вопрос понятен -Думаю, я не спрашиваю буквально о NULL-ссылках. Чаще всего я читал, что в C++ "ссылка - это объект". И в большинстве языков ООП объекты могут быть NULL -Pascal, C #, Java, JavaScript, PHP и т. д. во всех этих случаях вы можете делать someObject = null
или someObject := nil
. На самом деле Паскаль также поддерживает указатели, но все же позволяет объектам быть nil
, так как он имеет свое применение. Так почему же C++ какой-то особенный и не имеет объекта NULL? Было ли это просто упущением или реальным решением?