1 友元
友元 friend机制允许一个类授权其他的函数访问它的非公有成员.
友元声明以关键字friend开头,它只能出现在类的声明中,它们不受其在类体中的public private和protected区的影响.
友元分为外部函数友元,成员函数友元,类友元。
友元的特点:
- 不具有对称性: A是B的友元,并不意味着B是A的友元。
- 不具有传递性: A是B的友元,B是C的友元,但A不是C的友元。
- 不具有继承性: Base类型继承Object类型,如果Object类型是A的友元,但Base类型不是A友元。
1.1 外部友元函数:
若外部函数想访问内部函数的私有成员,则必须定义成友元形式。
若想在主函数中也想访问value的值,
处理方法如下:
5. 可以在类中将value的属性值设置为公有;
6. 通过对象点改变属性值;
7. 打印a的值
进行友元
1.2 成员函数友元:
- 友元函数不是类的成员函数,在函数体中访问对象的成员,必须用对象名加运算符"∵"加对象成员名。但友元函数可以访问类中的所有成员,一般函数只能访问类中的公有成员。
- 友元函数不受类中的访问权限关键字限制,可以把它放在类的公有、私有、保护部分,但结果一样。
- 某类的友元函数的作用域并非该类作用域。如果该友元函数是另一类的成员函数,则其作用域为另—类的作用域,否则与一般函数相同。
有了Base声明,但是不知道申明中含有哪些属性,则将12行的函数置后编译,再加上成员函数友元。
1.3 类友元
整个类可以是另一个类的友元。友元类的每个成员函数都是另一个类的友元函数,都可访问另一个类中的所以成员,共有,保护或私有数据成员.
2 静态关键字
由关键字static修饰类体中成员,成为类静态成员(static class member)。类的静态成员为其所有对象共享,不管有多少对象,静态成员只有一份存于公用内存中。静态数据成员被当作该类类型的全局对象对.
- 局部变量加静态关键字时,可见性没有改变,生存期发生了改变。
- 全局变量加静态关键字时,生存期没有改变,可见性发生了改变(只在本文件中可用,而其他文件中不可见)
2.1 静态属性
在类设计中,用关键字static修饰的数据成员为静态数据成员。有该类型实例化的所有对象,共享系统为静态成员分配的一个存储空间,而这个存储空间是程序执行main函数之前分配的,在实例化对象时不再为静态成员分配空间(静态成员数据不在对象空间中)。
2.1.1. 设计静态数据成员目的是信息共享;