Область видимости встроенных дружественных функций
Несмотря на определение встроенных дружественных функций внутри класса, их фактическая область действия выходит за пределы границ класса. Стандарт C требует, чтобы имя встроенной дружественной функции ссылалось на функцию, объявленную в ближайшей охватывающей области пространства имен. объем. Следовательно, прямые вызовы дружественной функции из самого класса, охватывающей области видимости или функций-членов приведут к ошибкам.
Это ограничение связано с тем, что дружественная функция объявляется в классе без переопределения или переопределения существующее имя функции. Таким образом, компилятор не распознает функцию в классе или охватывающую область пространства имен до тех пор, пока не встретит явное объявление в этом пространстве имен.
Чтобы получить доступ к встроенной дружественной функции, вы можете использовать поиск, зависящий от аргументов (ADL). . ADL позволяет компилятору искать функцию на основе типов аргументов, используемых при вызове. Этот подход соответствует принципу, согласно которому функция считается «связанной» с типом, передаваемым в качестве аргумента.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3