友元
类的友元函数是定义在类外部,但有权访问类的所有私有(private)成员和保护(protected)成员
友元可以是一个函数,该函数被称为友元函数;友元也可以是一个类,该类被称为友元类,在这种情况下,整个类及其所有成员都是友元。
从某种意义上来说是破坏了封装性
友元函数
class Student {
int i;
public:
Student() {}
~Student() {}
void setName(char* _name) {
name = _name;
}
friend void printName(Student *student);
private:
int j;
char *name;
protected:
int k;
};
void printName(Student *student) {
//能够使用student中私有的name属性
cout << student->name << endl;
}
Student *student = new Student;
student->setName("Lance");
printName(student);
友元类
class Student {
int i;
public:
Student() {}
~Student() {}
void setName(char* _name) {
name = _name;
}
friend void printName(Student *student);
//友元类
friend class Teacher;
private:
int j;
char *name;
protected:
int k;
};
class Teacher {
public:
void call(Student *student) {
//能够使用student中私有的name属性
cout << "call:" << student->name << endl;
}
};