友元(破坏封装)
我故意让别人能使用我的私有成员
-
友元类
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;
}