Friend functions can be shared by two or more classes : friend function « Class « C++ Tutorial






#include <iostream> 
using namespace std; 
 
class Cylinder; // a forward declaration 
 
enum colors { red, green, yellow }; 
 
class Cube { 
 colors color; 
public: 
  Cube(colors c) { color = c; } 
  friend bool sameColor(Cube x, Cylinder y); 
}; 
 
class Cylinder { 
 colors color; 
public: 
  Cylinder(colors c) { color= c; } 
  friend bool sameColor(Cube x, Cylinder y); 
}; 
 
bool sameColor(Cube x, Cylinder y) 
{ 
  if(x.color == y.color) 
     return true; 
  else 
     return false; 
} 
 
int main() 
{ 
  Cube cube1(red); 
  Cube cube2(green); 
  Cylinder cyl(green); 
 
 
  if(sameColor(cube1, cyl)) 
    cout << "cube1 and cyl are the same color.\n"; 
  else 
    cout << "cube1 and cyl are different colors.\n"; 
 
  if(sameColor(cube2, cyl)) 
    cout << "cube2 and cyl are the same color.\n"; 
  else 
    cout << "cube2 and cyl are different colors.\n"; 
 
  return 0; 
}
cube1 and cyl are different colors.
cube2 and cyl are the same color.








9.22.friend function
9.22.1.A friend function
9.22.2.Friend functions can be shared by two or more classes
9.22.3.A function can be a member of one class and a friend of another
9.22.4.Share friend function between classes
9.22.5.friend square() function for Distance
9.22.6.Friend functions and operator overloading
9.22.7.Friend functions can access private members of a class