1.友元函数
定义类时,在类中加上关键字修饰函数,则该函数就能成为该类的友元函数,它可以访问该类的所有成员。关于友元函数需要注意以下几点:
(1)友元函数不是类的成员,不带this指针,必须通过对象名或者对象的引用作为友元函数的参数来访问对象的成员。友元函数必须在类定义中说明(但是对友元函数指定访问权限无效,因为友元函数不属于类,所以在类中不管哪声明都是一样的效果)可以在类外定义。
(2)友元函数的作用域跟一般的函数作用域一样。
(3)一个类可以定义若干个友元函数,也可以将任一个成员函数说明为另一个类的友元函数。
class D;
class C{
...
public:
void fun(D&);//此时只能声明函数,不能定义函数体,因为D还没定义
};
class D{
...
friend void C::fun(D&);//声明友元函数
};
void C::fun(D&)//函数定义
{......}
(4)可以将一个类设为另一个类的友元,这样另一个类能访问该类的所有成员。但是这种友元关系不能继承和传递。
class C{
...
public:
void fun(D&);//此时只能声明函数,不能定义函数体,因为D还没定义
};
class D{
...
friend void C::fun(D&);//声明友元函数
};