Friend declaration in C++ - difference between public and private
No, there's no difference - you just tell that class B is a friend of class A and now can access its private and protected members, that's all.
Since the syntax friend class B
doesn't declare a member of the class A
, so it doesn't matter where you write it, class B
is a friend of class A
.
Also, if you write friend class B
in protected
section of A
, then it does NOT mean that B
can access only protected
and public
members of A
.
Always remember that once B
becomes a friend of A
, it can access any member of A
, no matter in which section you write friend class B
.
c++ has the notion of 'hidden friends': http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1601r0.pdf
Which only applies to friend functions that are defined inline. This make it so the functions can only be found via argument-dependent lookups, removing them from enclosing namespace.