Я видел это обсуждение - Проверка нулевого объекта в C ++ , и я был удивлен, что никто не говорил о том, когда ссылка может указывать на нулевой объект. В нашем коде мы регулярно используем нулевые объекты. Следующие функции возвращают nullObj.
const Obj&
nullObj()
{
static obj* nullPtr = NULL;
return static_cast< const Obj&>(*nullPtr);
}
На самом деле, когда я снова посмотрел на код, чтобы поднять эту тему, у меня возникло несколько вопросов о том, как работает приведенный выше код:
Как это можно сделать * nullPtr
- Это правда поскольку nullPtr - это статический объект, которому в куче выделяется память и, следовательно, у него гарантированно будет некоторое пространство и
Поскольку мы возвращаем ссылку на константу на obj, не создает ли компилятор временный объект (на какой-то тип nullObj ?? ) или будет ли ссылка const действовать как псевдоним для самого nullPtr?