... public member functions are declared—again, this friend declaration can appear anywhere in the class.

Fig. 9.23 Friends can access private members of a class.

Alternate View

 1   // Fig. 9.23: fig09_23.cpp
 2   // Friends can access private members of a class.
 3   #include <iostream>
 4   using namespace std;
 5
 6   // Count class definition
 7   class Count {
 8      friend void setX(Count&, int); // friend declaration   
 9   public:
10      int getX() const {return x;}
11   private:
12      int x{0};
13   };
14
15   // function setX can modify private data of Count         
16   // because setX is declared as a friend of Count (line 8) 
17   void setX(Count& c, int val) {                            
18      c.x = val; // allowed ...

Get C++ How to Program, 10/e now with O’Reilly online learning.

O’Reilly members experience live online training, plus books, videos, and digital content from 200+ publishers.