Это «неопределенный bahviour». Думайте о методах как о неявных параметрах, несущих «это». В вашем случае NULL был передан в качестве фактического аргумента для этого. Поскольку вы не ссылались ни на какие объектные данные, на которые ссылаются (неявно или явно) с помощью «this», это не привело к сбою.
Если бы метод был виртуальным, он, скорее всего, потерпел бы крах, поскольку виртуальные вызовы часто отправлялись через таблицу поиска, связанную с объектом (и, как следствие, 'this').
Поскольку авторы компилятора могут свободно реализовывать таблицы поиска this и virtual, как им угодно, вы не должны зависеть от этого поведения. Не определено.