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;
//}
破坏类的封装性