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

王朝other·作者佚名  2006-01-10
宽屏版  字体: |||超大  

前提:假设有两个类,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呀~

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有