[英]Does access specifier matters for a friend function?
在一个类中,如果函数在不同的说明符(如私有,受保护的或公共的)中被声明为好友,则没有任何区别。 据我了解,朋友功能不是成员。 因此,没关系。 但是,如果我看到静态的-它也不是成员,但是访问说明符很重要。 所以,我有点困惑。 所有这些代码如何正常工作? 以下课程之间有什么区别?
/** Private friend function **/
class frienddemoFunction
{
private:
unsigned int m_fanSpeed;
unsigned int m_dutyCycle;
/** This function is not a member of class frienddemo **/
friend void printValues(frienddemoFunction &d);
public:
void setFanSpeed(unsigned int fanSpeed);
unsigned int getFanSpeed();
};
/** Protected -- Friend Function **/
class frienddemoFunction
{
private:
unsigned int m_fanSpeed;
unsigned int m_dutyCycle;
public:
void setFanSpeed(unsigned int fanSpeed);
unsigned int getFanSpeed();
protected:
/** This function is not a member of class frienddemo **/
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();
/** This function is not a member of class frienddemo **/
friend void printValues(frienddemoFunction &d);
};
/** This function is not a member of class frienddemo **/
friend void printValues(frienddemoFunction &d);
不,没关系。
C ++标准,第§11.3 / 9节[friend.class]
无论好友声明出现在类成员规范的私有,受保护还是公共(9.2)部分中,好友声明的含义都是相同的。
注意:
在类中声明的静态函数仍然是类成员。 朋友功能不是。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.