友元(破坏封装)
我故意让别人能使用我的私有成员
-
友元类
friend class B;
-
友元函数
friend void func();
-
友元成员函数
friend void A::func();
例
#include <stdio.h>
class A;
class C{
public:
void CprintA(A &c);
};
class B{
public:
void BprintA(A &b){
b.data = 200;//修改值
printf("data = %d\n",b.data);
}
};
class A{
public:
A(){
data = 100;
}
friend void printA(A &a);//友元函数
friend class B;
friend void C::CprintA(A &c);
private:
int data;
};
void C::CprintA(A &c){
c.data = 300;
printf("data = %d\n",c.data);
}
void printA(A &a){
printf("data = %d\n",a.data);
}
int main(int argc, char const *argv[])
{
A a;
printA(a);//友元函数打印
B b;
b.BprintA(a);//友元类打印
C c;
c.CprintA(a);//友元成员函数
return 0;
}