В программировании указатель «this» ссылается на текущий экземпляр объекта внутри функции-члена. Это позволяет функции получать доступ к данным и методам объекта. Однако возникает вопрос: имеет ли смысл проверять, является ли «this» нулевым?
Давайте рассмотрим метод, выполняющий задачу внутри класса:
class MyClass {
public:
int myFunction() {
if (this == nullptr) {
return -1; // Error code
}
...
}
};
Вопрос в том, необходима ли эта проверка на нуль или она вообще действительна.
Согласно стандарту C, любой вызов нулевого указателя является неопределенным поведением. Это означает, что если указатель «this» равен нулю, вызов метода недействителен и поведение программы непредсказуемо. Поэтому в стандарте C проверка того, является ли «this» нулевым, не имеет смысла.
Однако некоторые реализации допускают использование «this == 0» для невиртуальных функций. В результате библиотеки, написанные специально для этих реализаций, могут полагаться на этот хак. ошибка звонящего. Однако предпочтительным методом отладки таких проблем является использование утверждений.
Кроме того, важно отметить, что проверка того, является ли «this» нулевым, не обязательно означает, что объект удаляется. Это означает лишь то, что вызов метода был выполнен для нулевого указателя или ссылки, полученной из нулевого указателя, что по своей сути является неправильным поведением в C .
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3