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

Почему я не могу напрямую вызывать встроенные дружественные функции из их определяющего класса?

Опубликовано 22 декабря 2024 г.
Просматривать:863

Why Can\'t I Directly Call Inline Friend Functions from Within Their Defining Class?

Область видимости встроенных дружественных функций

Несмотря на определение встроенных дружественных функций внутри класса, их фактическая область действия выходит за пределы границ класса. Стандарт C требует, чтобы имя встроенной дружественной функции ссылалось на функцию, объявленную в ближайшей охватывающей области пространства имен. объем. Следовательно, прямые вызовы дружественной функции из самого класса, охватывающей области видимости или функций-членов приведут к ошибкам.

Это ограничение связано с тем, что дружественная функция объявляется в классе без переопределения или переопределения существующее имя функции. Таким образом, компилятор не распознает функцию в классе или охватывающую область пространства имен до тех пор, пока не встретит явное объявление в этом пространстве имен.

Чтобы получить доступ к встроенной дружественной функции, вы можете использовать поиск, зависящий от аргументов (ADL). . ADL позволяет компилятору искать функцию на основе типов аргументов, используемых при вызове. Этот подход соответствует принципу, согласно которому функция считается «связанной» с типом, передаваемым в качестве аргумента.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3