友元:可以访问类的私有成员
友元函数:如果有一个函数是类A的友元函数,则该函数可以使用A中的所有成员
友元声明:在类中写上函数声明,在函数声明前加friend
使用注意:
1.友元的声明不受访问控制符限制,可以放在类的任意位置
2友元函数不是类的成员函数,是外部函数,没有this指针
3.友元破坏了类的封装性,慎用(尽量不用)
友元类:
如果类A是类B的友元类,则类A中所有函数都是类B的友元函数.
#include <iostream>
using namespace std;
class Address;
class Address
{
friend class Student;
public:
Address(const char *province,const char *city,const char *town,const char *street)
{
this->province = province;
this->city = city;
this->town = town;
this->street = street;
}
private:
const char *province;
const char *city;
const char *town;
const char *street;
};
class Student
{
public:
Student(int id,const char *name,const char *province,const char *city,const char *town,const char *street):
addr(province,city,town,street)
{
this->m_id = id;
this->name = name