在C++中定义类时,可以通过三个访问说明符(access specifier)来指定其成员的访问权限。
1 访问说明符
这三个访问说明符分别是public、private和protected。其中,public表示该成员可以被所有的人访问;private则与public刚好相反,它表示该成员只能被类内的成员函数访问;而protected表示该成员只能被类内函数和该类的派生类对象访问。
2 友元
在“1访问说明符”中提到,类的private和protected成员不能被外部函数访问。如果外部函数确实需要访问这些成员,则可以将外部函数声明为该类的友元。
2.1 声明类的友元函数
通过关键字friend来声明类的友元函数。例如
class X{
protected:
int i;
friend void g(X* x, int i)
};
以上代码将类外函数g()声明成了类X的友元函数。
2.2 声明及定义友元函数
在“2.1声明类的友元函数”中只是将函数g()声明为类X的友元,并没有对g()进行声明和定义。接下来,在类X定义的外部,对g()进行声明及定义。