0

Почему код явно вызывает статический метод через указатель, равный null?

7

Я видел подобный код в нескольких старых проектах:

class Class {
    static void Method() {}
};

((Class*)0)->Method();

Этот код содержит неопределенное поведение, так как включает разыменование нулевого указателя (что бы ни происходило после этого). Он действительно не имеет смысла — приведение типа используется здесь лишь для того, чтобы сообщить компилятору имя типа, и автор кода мог бы написать это вместо:

Class::Method();

И последний вариант был бы приемлемым.

Почему кто-то мог бы написать первый вариант кода? Это известный идиоматизм из каких-то добрых старых времен или что-то в этом роде?

0 ответ(ов)

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь