// Fig. 10.15: fig10_15.cpp // Friends can access private members of a class. #include using std::cout; using std::endl; // Count class definition class Count { friend void setX(Count &, int); // friend declaration public: Count() : x(0) // initialize x to 0 { // empty body } // end constructor Count // output x void print() const { cout << x << endl; } // end function print private: int x; // date member }; // end class Count // function setX can modify private date of Count // because setX is declared as a friend of Count (line 10) void SetX(Count &c, int val) { c.x = val; // allowed because setX is a friend of Count } // end function setX int main() { Count counter; // create Count object cout << "counter.x after instantiation: "; counter.print(); setX(counter, 8); // set x using a friend function cout << "counter.x after call to setX friend function: "; counter.print(); return 0; } // end main