In una classe, se la funzione è dichiarata come amico all'interno del diverso identificatore come - privato, protetto o pubblico, allora c'è qualche differenza. Secondo la mia comprensione, la funzione amico non è un membro. Quindi, non dovrebbe importare. Ma, se vedo statico, non è nemmeno un membro, ma gli specificatori di accesso contano molto. Quindi, sono un po 'confuso. Come funziona tutto questo codice? C'è qualche differenza tra le seguenti classi?Lo specificatore di accesso è importante per una funzione amico?
/** 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);
* "Ma, se vedo statico, non è nemmeno un membro" * - Sì. È. –
Statico è un membro della classe e non un membro dell'oggetto. –
Il termine "membro dell'oggetto" non esiste nello standard C++. Ci sono membri della classe statici e membri della classe non statici. –