дружественная функция класса

#c #oop #function #friend

#c #ооп #функция #друг

Вопрос:

Могу ли я сделать функцию, которая не является членом какого-либо класса, другом класса?Если да, может ли кто-нибудь указать мне на синтаксис? Я использовал эту страницу в качестве ссылки .При этом у него есть только функция, которая является частью другого класса, который становится другом.

Ответ №1:

Да, вы можете. Синтаксис для этого должен быть очевиден из примера, который вы указали:

 friend return_type free_function(args);
  

Комментарии:

1. аргументы? В примере, который они приводят внизу страницы, они используют только find() , а не find (int) . Я в замешательстве

2. @Manish: args является тем, чем является объявление аргументов функции. Я имею в виду пример, который немного предшествует тому, который вы только что упомянули.

3. Правильно .. но какой из них правильный? Они противоречат друг другу, но похоже, что то, что вы упомянули выше, правильно?

4. @Manish: Я тебя не понимаю. Неправильных ответов нет. Вы просто добавляете friend к объявлению функции — будь то member или free — и получаете объявление friend .

5. Хорошо, я хочу сказать, что если вы посмотрите, как определяется find, он принимает аргумент int. Но когда они объявляют ее дружественной функцией, они это не включают. Они говорят friend int BinaryTree::find() вместо того, что должно было быть friend int BinaryTree::find(int), если мы будем следовать вашей логике, чтобы включить аргументы . Вероятно, небольшая ошибка, и я думаю, что это должен быть второй вариант в соответствии с тем, что вы сказали. Но это сбивало с толку, когда я впервые увидел