Является ли это законным/четко определенным C ++, чтобы вызвать нестатический метод, который не доступа к членам через нC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Является ли это законным/четко определенным C ++, чтобы вызвать нестатический метод, который не доступа к членам через н

Сообщение Anonymous »

Я недавно наткнулся на какой -то код этой формы: < /p>

Код: Выделить всё

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
}
Похоже, что код явно учитывает возможность клиентского кода, который называет некоторую footptr-> bar () в случае, когда некоторые fooptr == null .
Но это нарушает стандарт C ++, чтобы сделать это, потому что это может не так, потому что это не так, как это может быть. Оператор-> Возвращает указатель-это означает, что даже если этот указатель null , он определенно не был привязан к тому, что он остановил нулевый указатель, я уверен, что стандарт считается незаконным или неопределенным). С другой стороны, семантика необработанных указателей не обязательно должна соответствовать семантике пользовательских указателей-возможно, вызывая оператор-> на них считается исключением, даже если компилятор не будет генерировать его.

Подробнее здесь: https://stackoverflow.com/questions/325 ... access-mem
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»