Почему невозможно иметь ссылку на void?

Сначала спросите себя, как c++ бы вы отменили ссылку на reference указатель void?

void *p = /*something*/ ;
cout << *p << endl;

Приведенный reference выше код бессмысленен, одна php-references из причин, по которой у нас void-pointer есть void, заключается в cpp том, что мы можем сказать: «Мне php-references нужно выполнить здесь некоторую reference общую работу с указателем, и php-references я не знаю и не забочусь о reference том, на что я указываю». По cxx определению компилятор не cpp знает, на что указывает void reference *, поэтому он не может его reference разыменовать. Вы можете - путем php-references приведения - но компилятор reference не может.

Ссылка на пустоту void-pointer связана с той же проблемой, по cxx определению указанные данные c++ не имеют типа, поэтому на reference них нельзя ссылаться каким-либо cxx значимым образом.

Чтобы ссылаться php-references на него, вам - программисту references - нужно преобразовать его cxx в другой тип, тогда у вас c++ может быть типизированная reference ссылка на него.

Не уверен, что void-pointers объяснил это так хорошо, как cxx хотел.

Рубен, есть мысли?

РЕДАКТИРОВАТЬ: чтобы cxx ответить на ваше изменение.

Возьмите php-references первую функцию, в которую reference вы передаете данные void cxx *. data - это совершенно references допустимый элемент, вы можете cxx использовать его для вычислений php-references или, если у вас реализовано c++ какое-то ведение журнала, вы void-pointers можете его зарегистрировать.

logger << data;

, и reference вы получите данные об адресе. Если cpp вы попытаетесь разыменовать void-pointers данные, компилятор выдаст reference вам ошибку (в данный момент void-pointers у вас нет компилятора C++ под c++ рукой, поэтому не уверен void-pointers в действительной ошибке). например

void* data = /* some assignment */;
logger << *data; // compiler error.

Теперь cxx компилятор не позволит вам void-pointer разыменовать void * по любой void-pointer причине (это не имеет смысла), то php-references же самое означает ссылку reference на void & data, за исключением reference того, что это ссылка , она неявно разыменована все время. Компилятор void-pointers не позволит вам разыменовать cxx void * на одной операции, он cxx не позволит вам разыменовать void-pointers его постоянно.

void& data = /* some assignment *.;
logger << data; // means same as logger << *data above

Вы не можете void-pointer сделать НИЧЕГО с данными, ЗА ИСКЛЮЧЕНИЕМ их адреса, и php-references для этого в язык встроен references совершенно хороший и безопасный php-references метод, т. е.

void* data;

Есть ли в этом reference еще смысл?

c++

reference

void-pointers

2022-09-15T12:04:51+00:00