【发布时间】:2015-03-01 23:11:00
【问题描述】:
在一个类中,如果函数在不同的说明符(如私有、受保护或公共)中声明为友元,那么有什么区别。据我了解,朋友功能不是会员。因此,应该没关系。但是,如果我看到静态 - 它也不是成员,但访问说明符很重要。所以,我有点困惑。所有这些代码如何正常工作?下面的类有什么区别吗?
/** 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);
【问题讨论】:
-
“但是,如果我看到静态 - 它也不是成员” -- 是的。是的。
-
Static 是类成员而不是对象成员。
-
C++ 标准中不存在术语“对象成员”。有静态类成员和非静态类成员。