c++206 友元类
#include<iostream>
using namespace std;
class A
{
public://声明的位置 和public private无关friend void modifyA(A* pA, int _a);//函数modifyA是A的好朋友A(int a, int b){this->a = a;this->b = b;}int getA(){return this->a;}
private:int a;int b;
};void modifyA(A* pA, int _a)
{//pA->a = 100;//a 是私有 pA->a = _a; // 允许访问私有成员
}int main()
{A a1(1, 2);cout << a1.getA() << endl;modifyA(&a1, 200);cout << a1.getA() << endl;return 0;
}
//#include<iostream>
//using namespace std;
//class A
//{
//
//public:
// friend class B;//B是A的友类 在b类可以访问A的私有成员/函数
// //声明的位置 和public private无关
// friend void modifyA(A* pA, int _a);//函数modifyA是A的好朋友
//
// A(int a=0, int b=0)
// {
// this->a = a;
// this->b = b;
// }
//
// int getA()
// {
//
// return this->a;
// }
//private:
// int a;
// int b;
//};
//class B {
//public:
// void Set(int a)
// {
// A Aobject = a;
// }
// void printB()
// {
// cout << Aobject.a << endl;
// }
//private:
// A Aobject;
//};
//void modifyA(A* pA, int _a)
//{
// //pA->a = 100;//a 是私有
// pA->a = _a; // 允许访问私有成员
//}
//
//int main()
//{
// /*A a1(1, 2);
// cout << a1.getA() << endl;
// modifyA(&a1, 200);
// cout << a1.getA() << endl;*/
// B b1;
// b1.Set(399);
// b1.printB();
// return 0;
//}
破坏类的封装性