在一个类中,如果函数在不同的说明符(如 private、protected 或 public)中被声明为 friend,那么有什么区别吗?据我了解, friend 功能不是成员。因此,这应该无关紧要。但是,如果我看到 static - 它也不是成员,但访问说明符很重要。所以,我有点困惑。所有这些代码如何正常工作?下面的类有区别吗?
/** 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]
The meaning of the friend declaration is the same whether the friend declaration appears in the private, protected or public (9.2) portion of the class member-specification.
注意:
在类中声明的静态函数仍然是类成员。友元函数不是。
关于c++ - 访问说明符对 friend 功能重要吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27762167/