友元函数

friend 函数是一个不为类成员的函数,但它可以访问类的私有和受保护的成员。 友元函数不被视为类成员;它们是获得了特殊访问权限的普通外部函数。 友元不在类的范围内,除非它们是另一个类的成员,否则不会使用成员选择运算符(. 和 –>)调用它们。 friend 函数由授予访问权限的类声明。 可将 friend 声明放置在类声明中的任何位置。 它不受访问控制关键字的影响。

以下示例显示 Point 类和友元函数 ChangePrivate。 friend 函数可以访问其接受为参数的 Point 对象的私有数据成员。

示例

// friend_functions.cpp
// compile with: /EHsc
#include <iostream>

using namespace std;
class Point
{
    friend void ChangePrivate( Point & );
public:
    Point( void ) : m_i(0) {}
    void PrintPrivate( void ){cout << m_i << endl; }

private:
    int m_i;
};

void ChangePrivate ( Point &i ) { i.m_i++; }

int main()
{
   Point sPoint;
   sPoint.PrintPrivate();
   ChangePrivate(sPoint);
   sPoint.PrintPrivate();
}
  

请参见

参考

友元 (C++)