Когда вызов функции-члена через нулевой указатель приводит к неопределенному поведению?C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Когда вызов функции-члена через нулевой указатель приводит к неопределенному поведению?

Сообщение Anonymous »

Рассмотрим следующий код:

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

#include 

struct foo
{
// (a):
void bar() { std::cout baz(); // (b)
}
Мы ожидаем, что (b) выйдет из строя, поскольку для нулевого указателя нет соответствующего элемента x. На практике (a) не дает сбоя, потому что указатель this никогда не используется.
Потому что (b) разыменовывает this указатель (

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

(*this).x = 5;
), а this имеет значение null, программа вводит неопределенное поведение, поскольку разыменование значения null всегда считается неопределенным поведением.
Да (a) > привести к неопределенному поведению? А что, если обе функции (и x) статичны?

Подробнее здесь: https://stackoverflow.com/questions/247 ... -undefined
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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