Ссылки должны быть связаны с объектом, который содержит действительный адрес памяти ... они не могут быть "неинициализированными", и при этом они не имеют значений инициализации по умолчанию без привязки. Обратите внимание, что раздел 8.5 / 8 в стандартных состояниях C ++ 11,
Программа, которая вызывает инициализацию по умолчанию или инициализацию значения объекта ссылочного типа, неверна.
Переменные-указатели с другой стороны - это просто адреса памяти, которые содержат значения, указывающие на другие адреса памяти и, следовательно, могут иметь значение NULL
.
Таким образом, если по стандарту операция dynamic_cast<T&>
должна возвращать действительный адрес памяти для привязки к ссылочной переменной, то, если динамическое приведение завершится неудачно, она не сможет вернуть «не-значение» ... единственный вариант это бросить исключение.