一些理解:
类的友元:关键字friend
弊端:使得被该类隐藏的一些数据成员在类的外部也可见,破坏了类的封装性;
好处:在某些特定的场合下可以减少开销,提高程序运行效率。
- 友元函数:在类的内部声明某个外部函数为该类的友元,即给这个外部函数授权,表示该外部函数有权访问该类中的私有或保护的数据成员,在使用中,该外部函数必须要有参数,且参数必须要有该类类型,以便通过该类实例化的对象对私有数据成员进行访问,一般情况下,将该参数声明为常引用,即const A &a,因为引用具有双向传递性,如果不想改变引用本身则声明为常引用,确保安全性;
- 友元类:在类的内部声明另一个类为该类的友元,即给另一个类授权,表示被授权的类有权访问该类中的私有或保护的数据成员,在实际应用中一般针对在另一个类中声明了该类类型的私有数据成员。
类的静态成员:关键字static,全局的,随着类的产生而产生,不属于某个实例化对象,非静态成员只属于某个对象。
- 静态成员数据:为该类的所有对象共享,整个类的对象共享一个数据成员;声明在类内,定义和初始化在类外,不用对象去调用,通过类名::函数名调用,一般用在记录实例化了多少对象;
- 静态成员函数:专门处理静态成员数据,为同一个类的所有对象共有。