关于友元

我们知道了private和public成员之后,private部分被隐藏了,被封装了,private部分可以被类的成员函数访问,但是如果是类外的成员函数该怎么办呢?
这时候就该友元上场了,用friend来修饰,也就是我是一个朋友,既然是朋友,自然可以来访问朋友的私有成员(private)了。
要注意的是友元没有传递性也没有继承性(朋友的朋友不一定是朋友,儿子的朋友也不一定是父亲的朋友啊)
类之间的友元关系:如果一个类指定了友元类,友元类的成员函数可以访问此类包括非公有成员在内的所有成员。
令成员函数作为友元:当把一个函数声明为友元的时候,必须明确指出该成员函数属于拿个类。
函数重载和友元:函数名字虽然相同,但他们还是不一样的函数啦,所以还是要每一个都声明的。
友元声明和作用域:友元的声明只是影响访问的权限,它本身不是普通意义上的声明。
struct X
{
    friend void f() {/*----*/}
    x() { f(); }
    void g();
    void h();
}
void X::g()  { return f(); }//错误,f()还没有声明
void f();//声明X中的f()
void X::h()  { return f(); }//正确
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值