C 友元函数基本应用方式解析
创始人
2024-06-22 12:41:39
0

在C++编程语言中,有很多功能及应用方式与其他编程语言大不相同,而且使用方式灵活,可以使程序员大大提高编程效率。在这里我们将会针对C++友元函数的基本概念进行一个详细的介绍。#t#

定义:允许一个类将对其非公有成员的访问权授予指定的类或函数(分别是友元类和C++友元函数)。

说明:友元是非成员函数,即它并不是授予友元关系的那个类的成员,它的声明可以出现在类中的任何地方(因此它们也不受其声明出现部分的访问控制的影响)

编程风格:虽然友元的声明可以出现在类中任何地方,但是将友元声明成组的放在类定义的开始或者结尾是个好主意。

注:1、当将类A的成员函数F声明为类B的友元时,必须在B的定义中将F用A限定。

2、C++友元函数只能访问对象的私有成员,不能直接访问类的私有成员(因此在调用友元时,必须在实参中指定友元要访问的类的对象)。

两个性质:

1、不具有传递性。

即:假设B是A的友元类,C是B的C++友元函数,那么C不能直接访问A的私有成员。

2、不具有继承性。

即:假设B是基类A的友元函数,C是A的继承类,那么B不能直接访问C的私有成员。

如果派生类想要将自己成员的访问权授予其基类的友元,派生类必须显式地这样声明友元。 //基类的友元对从该基类派生的类型没有特殊访问权限。

  1. class A  
  2. {  
  3. friend class C;  
  4. }  
  5. class B : public A  
  6. {  
  7. friend class C; //friend 无法继承  
  8. }  
  9. class C  
  10. {  

 

同样,如果基类和派生类都需要访问另一个类,则那个类必须特地将访问权限授予基类和每一个派生类.

  1. class A  
  2. {  
  3. }  
  4. class B : public A  
  5. {  
  6. }  
  7. class C  
  8. {  
  9. friend class A;  
  10. friend class B;  

 

以上就是对C++友元函数的相关概念介绍。
 

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
着眼MAC地址,解救无法享受D... 在安装了DHCP服务器的局域网环境中,每一台工作站在上网之前,都要先从DHCP服务器那里享受到地址动...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...