友元函数
friend 功能不是类的成员函数,但可以访问类的私有的和受保护成员。 友元函数不被视为类成员;它们是为特殊访问权限权限的规则外部函数。 friends 不是在类的大小,并且,它们不会调用使用成员选择运算符 (. 和 –AMP_GT),除非它们是另一个类的成员。 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();
}