2014-09-23 94 views
0
class fraction 
{ 
long num; 
long den; 

public: 
fraction(long,long); 
fraction(); 
~fraction(); 
fraction(const fraction &); 
void setNum(long); 
void setDen(long); 
friend void print(const fraction&); 
}; 


void print(const fraction& s) 
{ 
cout<<s.num<<" "<<s.den<<endl; 
} 

,並可以被稱爲當你調用成員函數時,你可以調用friend函數嗎?

fraction f1(5,1); 
print(f1); 

能以某種方式進行修改,這樣我們就可以稱其爲f1.print()

回答

2

不可以。只有成員可以使用成員訪問語法進行訪問。

0

它可以以某種方式修改嗎?

// forward declare fraction 
class fraction; 

// declare funtion in global scope 
void print(const fraction&); 

class fraction 
{ 
public: 
    /* ... */ 

    // declare function as friend 
    friend void print(const fraction&); 

    // add member function 
    void print() const { ::print(*this); } 
}; 

void print(const fraction& s) 
{ 
    cout<< s.num << " " << s.den << endl; 
} 

int main() 
{ 
    fraction f1(5,1); 
    f1.print(); 
} 
0

的「朋友」一詞是指所提及的函數或類是類的「朋友」,並給出了「朋友」允許訪問受保護的或私有的成員,如果他們公開。 「朋友」的唯一影響是朋友功能或朋友類中的代碼。除此之外,「朋友」什麼都不做。它不會改變「朋友」功能被調用或使用的方式。

0

朋友不是你類的成員函數,也不能像你的成員函數那樣調用,朋友函數只意味着這個函數可以訪問你的類的所有成員。

相關問題