• C++, объявления функций и их расположение в памяти, как обстоят дела?

    Nipheris
    @Nipheris Куратор тега C++
    Является ли пример 2 примером того, как лучше не делать в больших проектах?


    Большинство компиляторов будут инлайнить функцию в этом случае.

    Разница очень простая - в первом случае вы сможете вынести реализацию в отдельную единицу компиляции, а во втором - нет. Зачем это делать - читайте внимательно про compilation unit. Особенно, если вы пришли из языка, где такой задачи, как разделение include-файлов и файлов реализации нет в принципе.
    Конечно, есть случаи когда вынести реализацию в отдельный cpp-шник невозможно. Стандартный пример - шаблонные классы. Для них реализации всех функций все равно придется указывать в файле, который будет инклудиться. Поэтому особой разницы между 1 и 2 в этом случае нет.

    это как-то связано с компилятором и тем, как он выделяет под функцию память.

    Тогда почитайте про inlining функций, это видимо то, что вы слышали.
    Ответ написан
    1 комментарий