C++友元

友元的作用:操作其它类的私有实现部分

友元函数具体实例如下:

#include <iostream>
using namespace std;

class X;

class Y
{
public:
    void f(X*);
};

class X
{
private:
    int i;
public:
    void init();
    int getval(X);
    friend void Y::f(X*);
};

void X::init()
{
    i = 0;
}

int X::getval(X x)
{
    return X.i;
}

void Y::f(X* x)
{
    x.i = 2;
}

int main(int argc, char *argv[])
{
    X x;
    x.init();
    cout << x.getval(x) << endl;
    Y y;
    y.f(&x);
    cout << x.getval(x) << endl;
    return 0;
}

运行结果如下:

0
2

友元类实例:

#include <iostream>
using namespace std;

class X;

class Y
{
public:
    void f(X*);
    void g(X*);
};

class X
{
private:
    int i;
public:
    void init();
    int getval(X);
    friend class Y;
};

void X::init()
{
    i = 0;
}

int X::getval(X x)
{
    return X.i;
}

void Y::f(X* x)
{
    x->i = 2;
}

void Y::g(X* x)
{
    x->i = 4;
}

int main(int argc, char *argv[])
{
    X x;
    x.init();
    cout << x.getval(x) << endl;
    Y y;
    y.f(&x);
    cout << x.getval(x) << endl;
    y.g(&x);
    cout << x.getval(x) << endl;
    return 0;
}

运行结果:

0
2
4
发布了65 篇原创文章 · 获赞 6 · 访问量 1万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览