由浅入深-友元成员/成员函数

本文详细介绍了C++中友元的概念及其应用,包括友元类、友元函数及类的成员函数作为友元的情况。通过具体代码示例展示了如何使非成员函数能够访问类的私有成员。

 

现在还是浅阶段,有机会希望进入深阶段,呵呵...

有些概念要去理解,动手尝试,然后在理解,在以后的运用中不断的学习加深...

friend主要是,让外部函数,其他类或者类中的成员函数访问该类的私有成员或者成员函数..

废话少说,简单说几个使用..

 

 

由浅入深-友元成员/成员函数1 友元类 --  友元函数

------------------------类定义----------------------------------------

class  Foo{
    int i;

    public:
    int retu()
    {
        return i;
    }
    Foo()
    {
        i=9;
    }

    Foo(int j)
    {
        i=j;
    }

    friend class Bar;   //友元类
    friend int f1(Foo); //友元函数
};//类Foo定义结束

class Bar{
    public:
    void print(Foo a)
    {
        cout<<a.i<<endl; //使用类Foo中的成员
    }
};//类Bar定义结束

 

int f1(Foo a)
{
    return a.i;
}

------------------------类调用----------------------------------------

void main()

{

    Foo F1(10);

    Foo F2;

    Bar B1;
    B1.print(F1);       //10,调用赋值构造函数

    B1.print(F2);       //9,调用默认构造函数

  

    cout<<f1(F1)<<endl; //10

}

 

由浅入深-友元成员/成员函数类1的成员函数,作为类2的友元函数

------------------------类定义----------------------------------------

class Foo; //声明空类

class Bar1{
    public:
    void f2(Foo &a);  //注意:Foo只声明了空类,所以只能用他的引用或指针形式
};//定义类Bar1,注意f2,未在类中定义

class  Foo{
    int i;

    public:
    int retu()
    {
        return i;
    }
    Foo()
    {
        i=9;
    }
    Foo(int j)
    {
        i=j;
    }
    friend void Bar1::f2(Foo&); //友元函数f2(),为类Bar1的成员函数
};//类Foo定义结束

void Bar1:: f2(Foo &a)
{
    cout<<a.i<<endl;
}

------------------------类调用----------------------------------------

void main()

{

    Foo F2;
    Foo &reF2=F2;

    Bar1 B1;
    B1.f2(reF2); //打印类Foo中的成员i,为9

}

由浅入深-友元成员/成员函数总结思考一下下..类A~~类B~~类B成员函数f()~~函数f1() -- 假设后三者都有可能是类A的友元

--1) 类A中进行相关友元的定义;

--2) 类B 和 函数f1(),不用在类A定义中(定义友元前)定义;且类B中的任意成员函数都能使用类A的私有成员

--3) 类B的成员函数f1(),

    因为定义类B的时候用到类A的引用或者指针,在类B定义前声明一个空类B;

    需要在类A定义前定义类B,在类A定义后定义成员函数;

 

 

 

 

 

 

 

 

 

2011-10-29 18:17:58

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值