Я читаю C++ Primer Book (пятое издание), и у меня есть вопрос по книге, которую я читаю. Он говорит:Разница между Авто и Пустотой?
Тип
void*
представляет собой специальный тип указателя, который может содержать адрес любого объекта. Как и любой другой указатель, указательvoid*
имеет адрес, , но тип объекта по этому адресу неизвестен.
Хорошо, поэтому я это понимаю, но ... У меня много противоречий с утверждением. Во-первых, вы не можете использовать auto
? Разве он не делает то же самое, что и void
? Значение не
void *somePtr;
и
auto *somePtr;
то же самое?
Во-вторых, это говорит о том, что тип прикрепленного адреса неизвестен. Вы не можете использовать typeid
, чтобы получить тип? Как это:
int a = 5;
auto *somePtr = 5;
std::cout << typeid(*somePtr).name() << std::endl;
'int x; double y; void * p = & x; p = & y; 'не будет работать с' auto * '. –
Почему бы не @TavianBarnes ..? – amanuel2
Потому что 'auto *' будет выведено в 'int *'. –