Код: Выделить всё
class Foo
{
public:
void bar();
// .. other stuff
};
void Foo::bar()
{
if(!this) {
// .. do some stuff without accessing any data members
return;
}
// .. do normal actions using data members
}
Но это нарушает стандарт C ++, чтобы сделать это, потому что это может не так, потому что это не так, как это может быть. Оператор-> Возвращает указатель-это означает, что даже если этот указатель null , он определенно не был привязан к тому, что он остановил нулевый указатель, я уверен, что стандарт считается незаконным или неопределенным). С другой стороны, семантика необработанных указателей не обязательно должна соответствовать семантике пользовательских указателей-возможно, вызывая оператор-> на них считается исключением, даже если компилятор не будет генерировать его.
Подробнее здесь: https://stackoverflow.com/questions/325 ... access-mem
Мобильная версия