Bir sınıfta, işlev, özel, korunan veya herkese açık olarak farklı belirticinin içinde arkadaş olarak bildirilirse, o zaman herhangi bir fark vardır. Anlayışım gereği, arkadaş fonksiyonu üye değildir. Dolayısıyla, önemli olmamalı. Ancak, statik görüyorsam - aynı zamanda bir üye değildir, ancak erişim belirteci çok önemlidir. Yani, biraz kafam karıştı. Bütün bu kodlar nasıl çalışır? Aşağıdaki sınıflar arasında bir fark var mı?Erişim belirteci bir arkadaş fonksiyonu için önemli mi?
/** 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);
* "Ancak, statik görüyorsam da üye değil" * - Evet. Bu. –
Statik, bir nesne üyesi değil, bir nesne üyesidir. –
"Nesne üyesi" terimi C++ standardında mevcut değil. Statik sınıf üyeleri ve statik olmayan sınıf üyeleri vardır. –