友元函数
简化的说,所谓友元函数就是一种能访问类成员函数的非成员函数
- 全局函数访问类的私有成员
class person
{
//使全局函数成为友元,写在最上面就行了
friend void test2(person *p);
public:
private:
int age;
};
//全局函数访问类的私有成员
void test2(person *p)
{
p->age = 10;
}
- 类做友元
class MyClass
{
public:
void test2();
}
class person
{
//使 MyClass类 成为友元,写在最上面就行了,即MyClass类的所有函数都能访问 person 的私有成员
friend class MyClass;
private:
int age;
};
//MyClass类访问person类的私有成员
void MyClass::test2()
{
person *p= new person;
p->age = 10;
}
- 成员函数做友元
class MyClass
{
public:
void test2();//能访问
void test3();//不能访问
}
class person
{
//使 MyClass类的test2函数 成为友元,写在最上面就行了,即test2函数都能访问 person 的私有成员
friend void MyClass::test2();
private:
int age;
};
//MyClass类访问person类的私有成员
void MyClass::test2()
{
person *p= new person;
p->age = 10;
}