Встроенные функции-члены в C: более глубокое погружение
Встроенные функции-члены объявляются в определении класса, но реализуются вне тела класса. Хотя они обычно находятся в заголовочном файле, могут возникнуть ситуации, когда размещение реализации в заголовке невозможно.
Рассмотрим сценарий, в котором класс A включает экземпляр класса B, а класс B объявляет встроенный член. функция getA(), которая возвращает экземпляр A. Из-за циклического включения мы вынуждены переместить реализацию getA() в файл B.cpp.
Возникает вопрос: будет ли компилятор встроенным получитьА()? Согласно FAQ по C, определение встроенной функции должно находиться в заголовочном файле, за исключением случаев, когда она используется исключительно в одном файле .cpp. В нашем случае определение находится в B.cpp, что означает, что getA() не будет встроен, за исключением случаев его использования внутри самого B.cpp.
Что касается значения встроенных ключевых слов, рекомендуется использовать только тот, который находится в определении функции вне тела класса, для лучших практик.
Что касается поиска альтернативного подхода к определению встроенных функций-членов в файле .cpp, к сожалению, насколько нам известно, такой подход неизвестен. Определение должно находиться в заголовочном файле, чтобы компилятор мог выполнить встраивание.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3