«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Могут ли встроенные функции-члены быть реализованы в файле .cpp?

Могут ли встроенные функции-члены быть реализованы в файле .cpp?

Опубликовано 18 ноября 2024 г.
Просматривать:530

 Can Inline Member Functions Be Implemented in a .cpp File?

Встроенные функции-члены в 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