■□□
1.友元机制允许一个类将其非公有成员的访问权授予指定的函数或类。
2.友元的声明可出现在类中的任何地方,友元不是类的成员,所以它不受其声明部分的访问控制的影响。
3.通常将友元的声明成组的放在类的开始或结尾处是一个好主意。
4.友元可以是普通的非成员函数,可以是其它类的成员函数,也可以是整个类。当我们将成员函数声明为友元时,函数名必须用该函数所属的类名限定。
5.一般的讲,必须先定义包含成员函数的类才能将成员函数设为友元。而将类或非成员函数设为友元却不必先定义类或非成员函数。
6.友元声明可将已命名的类或非成员函数引入到类的外围作用域。友元函数可以在类内定义,此函数的作用域同样扩展到类的外围。
7.重载函数声明为友元,必须一个一个分别指定。
8.指定为友元的唯一意义是,被声明为友元的类或函数可访问到对应类的私有成员。如果不打算访问类的私有成员不必使用友元。如用+=操作符来定义的+操作符,没必要声明为对应类的友元:
Foo operator+(const Foo& f1, const Foo& f2) {
Foo tmp;
tmp+=f1;
tmp+=f2;
return tmp;
}
9.友元关系不能继承,基类的友元对派生类的成员没有特殊的访问权限。当然,由于基类的友元函数(非其它类成员函数)是不属于基类的普通全局函数,因此任何代码段都可直接调用这个函数。
10.友元关键字friend只能出现在类内部。
11.普通友元函数(非其它类的成员函数)不属于任何类,它是定义在类外的普通全局函数,因此一般定义在类头文件中。
12.友元关系不具有对称性和传递性,一个友元只单一的属于一个类。
C++中的友元机制
最新推荐文章于 2024-10-19 22:55:19 发布