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