In a class, if a function is declared as in each type specifier - private, protected or public, then there is some difference. In my understanding, the function of a friend is not a member. So it doesn’t matter. But, if I see static - it is also not a member, but the access specifier is of great importance. So, I'm a little confused. How does all this code work? Is there any difference between the following classes?
class frienddemoFunction { private: unsigned int m_fanSpeed; unsigned int m_dutyCycle; friend void printValues(frienddemoFunction &d); public: void setFanSpeed(unsigned int fanSpeed); unsigned int getFanSpeed(); }; class frienddemoFunction { private: unsigned int m_fanSpeed; unsigned int m_dutyCycle; public: void setFanSpeed(unsigned int fanSpeed); unsigned int getFanSpeed(); protected: friend void printValues(frienddemoFunction &d); }; class frienddemoFunction { private: unsigned int m_fanSpeed; unsigned int m_dutyCycle; public: void setFanSpeed(unsigned int fanSpeed); unsigned int getFanSpeed(); friend void printValues(frienddemoFunction &d); }; friend void printValues(frienddemoFunction &d);
source share