C++中的友元机制

■□□

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.友元关系不具有对称性和传递性,一个友元只单一的属于一个类。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值