Я знаю, что функция с аналогичной сигнатурой метода объявлена как друг класса A
Да, функции, объявленные как друзья, могут получить доступ к закрытым членам.
но глобальная showA () не совпадает с функцией showA (A &), объявленной внутри класса A.
Неясно, как вы пришли к такому выводу. Вы объявляете, что void showA(A&)
- друг, и затем вы предоставляете определение для void showA(A&)
. Это одна и та же функция.
PS: обратите внимание, что если бы вы определили функцию с сигнатурой showA()
, как вы написали в тексте, то это действительно была бы другая функция без доступа к частнойчлены A
.