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

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

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

7. 打印a的值

进行友元



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

由关键字static修饰类体中成员,成为类静态成员(static class member)。类的静态成员为其所有对象共享,不管有多少对象,静态成员只有一份存于公用内存中。静态数据成员被当作该类类型的全局对象对.
在类设计中,用关键字static修饰的数据成员为静态数据成员。有该类型实例化的所有对象,共享系统为静态成员分配的一个存储空间,而这个存储空间是程序执行main函数之前分配的,在实例化对象时不再为静态成员分配空间(静态成员数据不在对象空间中)。
2.1.1. 设计静态数据成员目的是信息共享;


_pi为共享的,因此,打印出只有4个字节。
示例2:

示例3:记录当前对象创建的个数

特殊的静态成员:

示例3:在自身类型设计中,既不能设计成值类型也不能设计成引用。静态数据成员的类型可以是其所属类而非static数据成员只能被声明为该类的指针.

总结:
函数成员说明为静态,将与该类的不同对象无关。静态函数成员的调用,在对象之外可以采用下面的方式:类名::函数名或对象名.函数名。
与静态数据成员相反,为使用方便,静态函数成员多为公有。

静态成员函数没有this 指针,因此在静态成员函数显式地使用this指针都将导致编译时刻错误。试图访问隐式使用this指针所指向的非静态数据成员也会导致编译时刻错误。
总结:
一个常规的成员函数声明描述了三件在逻辑上相互不同的事情:
在一个系统中,一个对象可能与不同的对象相关,以下是不同的关系。
.依赖(Dependency)(使用一个)
·关联(Association)(使用一个)·聚合(Aggregation)(有一个)
·组合(Composition )(有一个,“用…来实现”)·继承(Inheritance)(是一个)
·类模板(Class template)
4.1关联(Association):使用一个
对于两个相互独立的对象,当对象A与另一个对象B存在固定的对应关系时,这两个对象之间为关联关系。关联关系是依赖关系的特例。
在类型的设计中,关联关系主要体现在目标类型的指针或引用,作为当前类型的属性成员。没有整体和部分的关系,只是有关系而已。

设计为指针时,为弱关联(一个老师可以同时教多门课程);设计为引用时,为强关联(一旦设计,则该老师与此课程绑定)