Моя идея - напечатать объект, на который он указывает. Я думаю, что действительный указатель должен иметь действительный объект. Если мы попытаемся распечатать объект, мы проверим, действителен ли указатель. Я прав?
Я думаю, что действительный указатель должен иметь действительный объект.
Да, это определение действительного указателя.
Если мы попытаемся распечатать объект, мы проверим, действителен ли указатель.
К сожалению, вы не можете. Вы можете проверить, является ли указатель нулевым; но если он не был инициализирован должным образом или если он указал на уничтоженный объект, он не будет ни действительным, ни нулевым.
Если вам нужен указатель, достаточно умный, чтобы узнать, действительно ли он действителен, вам понадобится умный указатель.
Ваш код должен быть умным для отслеживания указателей и избегать использования нераспределенных или неинициализированных указателей. Действительность или недействительность - относительные понятия в коде. Попробуйте использовать интеллектуальные указатели.
Для простых указателей вы можете инициализировать их нулевым, если вы не знаете, что указатель будет инициализирован в будущем или нет. Затем перед использованием указателя вы можете проверить, является ли оно нулевым или нет.
Но этого недостаточно, неправильно сформированные коды могут иметь неверные указатели, и его программист найдет их трудными. Например, рассмотрим возможность возврата указателя на локальный временный объект, который будет уничтожаться после выхода из функции. Поэтому вы должны управлять ими в коде.
Сначала попробуйте избежать указателей. Если вам это нужно, используйте интеллектуальные указатели. Если вам нужно использовать пустой указатель, напишите хорошо сформированный код и указатели на дорожки, исправив использование распределения/освобождения и нулевого значения.