Я пытался разобраться со встраиванием сам, но не особо уверен в некоторых деталях.
Насколько я понял встраивание происходит автоматически, и никаких дополнительных ключевых слов для этого не надо.
Как конкретно встраиваются геттеры? допустим есть геттер:
int getSize() const noexcept { return _size; }
где _size переменная типа int, объявлённая в классе, с этим геттером.
что выдаст компилятор при вызове геттера: obj.getSize();
?
этот код просто заменится на obj._size;
?
Встраиваются ли функции из статических библиотек?
Встраиваются ли методы шаблонных классов?
Не повредит ли скорости работы программы использование геттеров в методах того же класса, где определены эти самые геттеры. (иногда это просто улучшает читаемость)
Ps. компилятор - Visual c++ самой последней версии.
Все функции встраиваются одинаково. Никаких особенностей именно для "геттеров" нет. На уровне языка вопроса "как встраиваются функции" не существует, ибо такое встраивание ни в чем не проявляется. А все остальное - детали реализации. Да, вполне возможно, что код просто заменится на obj._size
.
Однако буквальный код obj.getSize();
обычно будет удален вообще, ибо побочных эффектов у функции нет, а результат вызова никак не используется.
Встраиваться могут только функции, чьи определения целиком и полностью видны в точке их вызова во время компиляции. Так что "статические библиотеки" тут вообще ни при чем. Встраиваемые функции по этой причине определяются в заголовочных файлах. А с каким типом библиотеки идет этот заголовочный файл - никакого значения не имеет.
Шаблонность класса никак не влияет на встраиваемость методов. Это совершенно ортогональные вопросы.
В то же время шаблонность может побочно помогать встраиваемости, ибо шаблоны обычно целиком определяются в заголовочных файлах.
Не повредит. А дальше: пробуйте и смотрите.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Как правильно вывести символ новой строки в поток std::ostream, передаваемый функции?
Создаю расширение для chromeСтолкнулся с проблемой копирования текста на js
Использую плагин bootstrap datepicker для выбора датКак можно прописать ограничение, чтобы можно было выбрать даты в диапазоне от 18 до 100 лет?