友元函数
友元函数是指可以访问类的私有成员变量和私有函数的函数,它不是类的成员函数,只是一个普通函数,但是可以访问类的私有成员变量和私有函数。在C++中,可以通过友元函数来实现类的封装,避免将类的私有成员变量和私有函数暴露给外部。
友元函数的声明和定义
在C++中,友元函数的声明和定义需要两步:
- 声明:在类里面使用friend关键字声明友元函数,友元函数的声明可以放在public、protected和private访问控制符之后;
- 定义:友元函数的定义要在类外面,定义时要使用友元函数的完整函数签名,包括函数的返回值类型、函数名、参数列表等;
使用方法
#includeusing namespace std; //定义一个类 class A { private: int m_nPrivate; public: A() { m_nPrivate = 0; } //声明一个友元函数 friend void PrintPrivate(A &a); }; //定义友元函数 void PrintPrivate(A &a) { cout << a.m_nPrivate << endl; } int main() { A a; PrintPrivate(a); return 0; }
上面的代码定义了一个类A,类A有一个私有成员变量m_nPrivate,同时声明了一个友元函数PrintPrivate,友元函数的定义在main函数之外,定义时要使用友元函数的完整函数签名,在main函数中使用友元函数来访问类A的私有成员变量m_nPrivate。