Сначала спросите себя, как бы вы отменили ссылку на пустой указатель?
void *p = /*something*/ ;
cout << *p << endl;
Приведенный выше код не имеет смысла, одна из причин, по которой мы упустили это, заключается в том, что мы можем сказать: «Мне нужно сделать какую-то общую работу с указателем, и я не знаю и не беспокоюсь о том, на что я указываю».
По определению компилятор не знает, на что указывает пустота *, поэтому он не может разыменовать его. Вы можете - путем приведения - но компилятор не может.
Ссылка на void страдает от той же проблемы, по определению указанные данные не имеют типа, поэтому на них нельзя ссылаться каким-либо значимым образом.
Чтобы ссылаться на него, вам - программисту - нужно привести его к другому типу, тогда у вас может быть напечатанная ссылка на него.
Не уверен, объяснил ли я это так хорошо, как хотел.
Рубен, есть мысли?
РЕДАКТИРОВАТЬ: Чтобы ответить на ваши изменения.
Возьмите первую функцию, где вы передаете void * данные.
данные - это абсолютно правильный элемент, вы можете с ним вычислять, или, если у вас реализовано какое-либо ведение журнала, вы можете зарегистрировать его.
logger << data;
и вы получите адресные данные, на которые указывает. Если вы попытаетесь разыменовать данные, компилятор выдаст вам ошибку (в данный момент у вас нет под рукой компилятора C ++, поэтому не уверен в действительной ошибке).
например
void* data = /* some assignment */;
logger << *data; // compiler error.
Теперь компилятор не позволит вам разыменовать void * по любой причине (это не имеет смысла), то же самое относится и к ссылке на void & data, за исключением того, что, поскольку это ссылка , она неявно разыменовывается все время . Компилятор не позволит вам разыменовать пустоту * в одной операции, он не позволит вам разыменовать ее постоянно.
void& data = /* some assignment *.;
logger << data; // means same as logger << *data above
Вы не можете сделать НИЧЕГО с данными ЗА ИСКЛЮЧЕНИЕМ взять его адрес, и для этого есть встроенный в язык очень хороший и безопасный метод, т. Е.
void* data;
Это имеет больше смысла?