你打电话给会员功能可以打电话给朋友功能吗?

时间:2014-09-23 10:02:21

标签: c++ class oop object

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;
}

,可以称为

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

是否可以通过某种方式进行修改,以便我们可以将其称为f1.print()

4 个答案:

答案 0 :(得分:2)

没有。只能使用member-access语法访问成员。

答案 1 :(得分: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();
}

答案 2 :(得分:0)

这个词&#34;朋友&#34;意味着所提到的功能或类别是一个朋友&#34;你的班级,并给#34;朋友&#34;允许访问受保护或私人成员,就像他们是公开的一样。 &#34;朋友&#34;的唯一影响在朋友函数或朋友类中的代码上。除此之外,&#34;朋友&#34;什么也没做。它并没有改变“朋友”的方式。函数被调用或使用。

答案 3 :(得分:0)

朋友不是您班级的成员函数,不能像您的成员函数一样调用,朋友函数只表示此函数可以访问您班级的所有成员。