友元,静态关键字,静态方法以及对象间的关系

本文详细介绍了C++和Java中的友元机制,包括外部友元函数、成员函数友元和类友元,强调了友元的特性。接着讨论了静态关键字的应用,如静态属性和静态方法,以及静态成员的作用和初始化。最后,探讨了对象之间的关联、聚合和组合等关系在类设计中的重要性。
摘要由CSDN通过智能技术生成

1 友元

友元 friend机制允许一个类授权其他的函数访问它的非公有成员.
友元声明以关键字friend开头,它只能出现在类的声明中,它们不受其在类体中的public private和protected区的影响.
友元分为外部函数友元,成员函数友元,类友元。
友元的特点:

  1. 不具有对称性: A是B的友元,并不意味着B是A的友元。
  2. 不具有传递性: A是B的友元,B是C的友元,但A不是C的友元。
  3. 不具有继承性: Base类型继承Object类型,如果Object类型是A的友元,但Base类型不是A友元。

1.1 外部友元函数:

若外部函数想访问内部函数的私有成员,则必须定义成友元形式。

若想在主函数中也想访问value的值,

处理方法如下:
5. 可以在类中将value的属性值设置为公有;
6. 通过对象点改变属性值;

7. 打印a的值

进行友元

1.2 成员函数友元:

  1. 友元函数不是类的成员函数,在函数体中访问对象的成员,必须用对象名加运算符"∵"加对象成员名。但友元函数可以访问类中的所有成员,一般函数只能访问类中的公有成员。
  2. 友元函数不受类中的访问权限关键字限制,可以把它放在类的公有、私有、保护部分,但结果一样。
  3. 某类的友元函数的作用域并非该类作用域。如果该友元函数是另一类的成员函数,则其作用域为另—类的作用域,否则与一般函数相同。

    有了Base声明,但是不知道申明中含有哪些属性,则将12行的函数置后编译,再加上成员函数友元。

1.3 类友元

整个类可以是另一个类的友元。友元类的每个成员函数都是另一个类的友元函数,都可访问另一个类中的所以成员,共有,保护或私有数据成员.

2 静态关键字

由关键字static修饰类体中成员,成为类静态成员(static class member)。类的静态成员为其所有对象共享,不管有多少对象,静态成员只有一份存于公用内存中。静态数据成员被当作该类类型的全局对象对.

  1. 局部变量加静态关键字时,可见性没有改变,生存期发生了改变。
  2. 全局变量加静态关键字时,生存期没有改变,可见性发生了改变(只在本文件中可用,而其他文件中不可见)

2.1 静态属性

在类设计中,用关键字static修饰的数据成员为静态数据成员。有该类型实例化的所有对象,共享系统为静态成员分配的一个存储空间,而这个存储空间是程序执行main函数之前分配的,在实例化对象时不再为静态成员分配空间(静态成员数据不在对象空间中)。
2.1.1. 设计静态数据成员目的是信息共享;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值