C++-friend说明符

简介

friend 关键词所声明对象的操作称之为友元声明

友元声明在类体内出现,并向一个函数或另一个类授予对包含友元声明的类的私有及受保护成员的访问权

友元可以声明一个函数,该函数被称为友元函数;友元也可以声明一个类,该类被称为友元类,在这种情况下,整个类及其所有成员都是友元

详解

性质

  1. 友元关系不传递
  2. 友元关系不继承
  3. 访问说明符对于友元声明的含义没有影响(即private与protected内声明与public相同)
  4. 当局部类将一个无限定的函数或类声明为其友元时,只查找在其最内层非类作用域中的函数与类,而非全局函数

友元函数使用

  1. 因为友元函数没有this指针,则参数要有三种情况:
    1. 要访问非static成员时,需要对象做参数
    2. 要访问static成员或全局变量时,则不需要对象做参数
    3. 如果做参数的对象是全局对象,则不需要对象做参数
  2. 可以直接调用友元函数,不需要通过对象或指针