关于C++中友元的理解和应用

关于C++中友元的理解和应用

友元的简介:

书本上的定义简单的概括为:如果类A中的函数要访问类B中的成员,那么类A中该函数是类B的友元函数。
其实当我看完这段定义的时候是有点绕的,到底怎么算是友元,友元怎么用,进过一番分析我把自己的理解写下来,如有错误,记得提醒哦,嘻嘻

友元的优缺点:

还是先讲一下友元的优缺点吧。优点是提高了效率,简化操作,表达简单清晰(但是有时会弄混 ,接下来具体说); 缺点:破坏了封装的机制,给C++类的包装打了一个天窗;

具体讲解:

具体看代码:

class Boy{
    public:
        void display(Girl &);
}

void Boy::display(Girl &girl) {
    cout<<"girl's name is:"<<girl.name<<",age:"<<girl.age<<endl;
    //借助友元,在Boy的成员函数display中,借助girl的对象,直接访问girl的私有变量
}

class Girl{
    private:
        string name;
        int age;
        friend Boy;//声明类Boy是类Girl的友元 
}

上面friend Boy;一句以及void display(Girl &);一句到底该怎么写总结如下:

首先明确Girl是Boy朋友,但是Boy不一定承认是Girl的朋友(即boy可以访问girl的私有成员,但girl不一定能访问boy的私有成员);
其次在具体定义位置时记住一句话:“我是谁的朋友”,比如上面Girl是Boy的朋友,则在Girl中定义友元类Boy,而在Boy中定义访问到Girl私有成员的函数。

OK. 解决。上面仅仅讲的是关于友元类的使用方式,同样友元函数可以类推。
本文代码部分借鉴:这里写链接内容

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值