关于友元的使用的笔记和疑问

前提:假设有两个类,class A and class B,类A有私有成分,而类B想要使用他们

class A

{

private:

     void privateMethod();

     int _iPrivateData;

}

class B

{

     void doSomething();

     void doOtherthing();

}

1.如果A想要让整个B都可以使用他的私有物,就可以声明B为他的友元类:

class A

{

private:

     friend B;//或者是     friend class B;     都可以,但是后者快一些,他清楚的告诉编译器B是什么,免得他费神去猜

     void privateMethod();

     int _iPrivateData;

}

加了蓝色的这一行以后,类B就可以任意的使用A的全部私有数据或者方法了。

2.如果A只想让B的某个方法能够使用他的私有物,就可以声明Bdenagefangfa为他的友元方法:

class A

{

private:

     friend B::doSomething();//这样声明后,B的doSomething()可以任意使用A的私有物了,

                                                 //而B的doOtherthing()则没有这样的权限。

     void privateMethod();

     int _iPrivateData;

}

3.如果A只想要类B或是B的doSomething()使用他的privateMethod(),而不能使用他的_iPrivateData,我还不知道有这样的方法。如果这种控制无法实现的话,A是不是太可怜了点,它竟然不能对自己的东西拥有完全自由的控制权。希望不是这样,有谁能来解救一下可怜的小A呀~

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值