Когда вызов функции-члена через нулевой указатель приводит к неопределенному поведению?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

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