Пользовательские исключения. Это нормально так приколоться над собой в процессе обучения.
А С/С++ вызвал бы метод без всяких выебонов. И оно даже бы не упало, так как к полям объекта обращение не происходит.
Ну а в шарпах надо таки сначало
A a = new A();
A a = new A();
И работало бы до тех пор, пока кто-то другой не добавил бы в метод обращение к полю объекта(естественно, не подозревая, что на другом конце проекта какой-то дебил вызывает метод на неинициализированном объекте). Иииии. Замечательный плавающий баг!
C для начала послал бы тебя на хер, тк не знает, что такое классы
вообще-то, нет в С нет методов вообще, как таковых, а в С++ вызов метода с нулевым this - УБ
Вот вы придирчивые, villy уже написал об этом. Да я криво написал, но я имел в виду вообще всю философию С/С++, где на первое место ставиться производительность, а всякие проверки в рантайме сведены на нет, даже исключения отключаемые. То, что в С не классов и так ясно.
Это конечно очень, очень плохо так делать, но в С++ вызов метода с нулевым this, если метод и класс не виртуальный совсем не УБ. Оно будет работать, и оно не может не работать, так как невиртуальный метод это обычная функция, имя которой было mangled особым образом.
Это конечно очень, очень плохо так делать, но в С++ вызов метода с нулевым this, если метод и класс не виртуальный совсем не УБ. Оно будет работать, и оно не может не работать, так как невиртуальный метод это обычная функция, имя которой было mangled особым образом.
Таки загуглил, всюду пишут, что это УБ, аргументируя что дереференс нулпоинтера это УБ, но здесь как раз дереференса то и не происходит. Вообщем оно то скорее всего таки де юро УБ, но во всех имплементациях плюсов работать будет (потому, что это обычная функция, но замангленная).
Я видел сотню раз, как во всяких опенсорсных либах это эксплойтилось для разных хаков.
Я видел сотню раз, как во всяких опенсорсных либах это эксплойтилось для разных хаков.
>но во всех имплементациях плюсов работать будет
не будет, начиная с версии gcc, ЕМНИП, 9
не будет, начиная с версии gcc, ЕМНИП, 9
Да ну, и по какой такой причине?
Вот ниже асм сгенереный gcc 9.2, почему оно должно не работать?
https://godbolt.org/z/zaN33V
Вот ниже асм сгенереный gcc 9.2, почему оно должно не работать?
https://godbolt.org/z/zaN33V
Ты точно понимаешь, что такое УБ?
Так себе юмор
Просто забыл волшебное слово написать
Static?
Вызывать статики через экземпляры объекта - дурной тон.
А тут почти и нет никакого экземпляра
Чтобы написать коммент, необходимо залогиниться
A a;
a.Method();
А на скриншоте нал как раз написали что бы до бездарей дошло и они бы тоже поржали.