3. 友元
友元的目的是让一个函数或者类访问另一个类中私有成员
友元的关键字为friend
友元的三种实现方式:
全局函数做友元
类做友元
成员函数做友元
3.1 全局函数做友元
class Person{
friend void func(Person &p); //若想要全局函数访问私有属性,要声明友元
public:
Person(){
age=18;
height=180;
}
int height;
private:
int age;
};
//全局函数
void func(Person &p){
cout<<p.height<<endl; //正确
cout<<p.age<<endl; //正确,在Person类中声明友元
}
3.2 友元类
class Person{
friend class Parents; //Parents可以访问Person类的私有成员
public:
Person(){
age=18;
height=180;
}
int height;
private:
int age;
};
class Parents{
public:
Person *p;
Parents(){
p=new Person;
}
void func(){
Parents parents;
cout<<p->age;
}
};
3.3 成员函数做友元
class Parents{
public:
Parents(){
p=new Person;
}
void func(){
cout<<p->age<<endl;
}
private:
Person *p;
};
class Person{
friend void Parents::func(); //Parents成员函数可以访问Person类的私有成员
public:
Person(){
age=18;
height=180;
}
int height;
private:
int age;
};