1.友元函数:
声明形式: friend void modifyTest(Test *pT, int _a);
友元函数可以在类外访问类的私有成员。
2.友元类
声明形式:friend class B;
声明B是Test的友元类,B中可以访问Test的私有成员。
例子:
#include "iostream"
using namespace std;
class Test
{
private:
int a;
friend class B; //声明B是Test的友元类,在B中可以访问Test的私有成员
friend void modifyTest(Test *pT, int _a); //声明友元函数,友元函数可以在类外访问类的私有成员
public:
Test(int _a) : a(_a)
{
}
int getA()
{
return a;
}
};
class B
{
private:
Test t2;
public:
B() : t2(30)
{
}
void Set(int a)
{
t2.a = a;
}
void printB()
{
cout << t2.a << endl;
}
};
void modifyTest(Test *pT, int _a)
{
pT->a = _a;
}
void main()
{
//Test t1(10);
//cout << t1.getA() << endl;
//cout << "--------------" << endl;
//modifyTest(&t1, 250);
//cout << t1.getA() << endl;
cout << "++++++++++++++++" << endl;
B Bobj;
Bobj.printB();
Bobj.Set(300);
Bobj.printB();
system("pause");
}