Anatoly Vorobey (avva) wrote,
Anatoly Vorobey
avva

Category:

с чего вызывается функция

(для программистов)

How C++ Resolves a Function Call

Увлекательный пересказ того, как компилятор C++ находит правильную функцию, которую надо вызвать, когда в коде вызывается функция. Как шаблоны/перегрузки/пространства имен все друг с другом переплетаются итд.

К некоторому своему смущению понял во время чтения, что я не знал про такую штуку, как ADL - по крайней мере не помню, чтобы хоть когда-то сознательно пользовался или учитывал при чтении кода. ADL - это когда написан вызов foo(bar), а переменная bar при этом принадлежит типу из какого-то пространства baz::, и сам этот факт заставляет компилятор брать в качестве кандидата функцию baz::foo, если такая существует - хотя вызов происходит вне этого пространства.

Теперь, после прочтения этой записи (а также супер-подробного разбора ADL) понимаю, что именно так работает поддержка << в iostream с аргументами из пространств типов; или, например, std::swap. Так что выходит, что я много раз пользовался ADL, просто не задумывался над тем, как компилятор находит мою функцию. Чувствую себя, как герой Мольера, узнавший, что всю жизнь говорил прозой.
Tags: программирование
Subscribe

  • хроники маразма

    Хроники маразма. 1. Электроник и Сыроежкин, то есть актеры, игравшие их в фильме "Приключения Электроника" - Владимир и Юрий Торсуевы - теперь…

  • о коррупции

    Я, честно говоря, чаще думаю о других проблемах президентства Трампа, нежели коррупция, более фундаментальных, как мне кажется; но в процитированной…

  • веселится и ликует весь народ

    Похоже, сегодня исторический день - впервые на выборах лидера страны побеждает золотой призер Международной Математической олимпиады! Да еще и не…

  • Post a new comment

    Error

    default userpic

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 34 comments

  • хроники маразма

    Хроники маразма. 1. Электроник и Сыроежкин, то есть актеры, игравшие их в фильме "Приключения Электроника" - Владимир и Юрий Торсуевы - теперь…

  • о коррупции

    Я, честно говоря, чаще думаю о других проблемах президентства Трампа, нежели коррупция, более фундаментальных, как мне кажется; но в процитированной…

  • веселится и ликует весь народ

    Похоже, сегодня исторический день - впервые на выборах лидера страны побеждает золотой призер Международной Математической олимпиады! Да еще и не…