2014-09-23 67 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

朋友不是你类的成员函数,也不能像你的成员函数那样调用,朋友函数只意味着这个函数可以访问你的类的所有成员。