静态数据成员
用关键字static声名
为该类所有对象共享
必须在类外定义和初始化
原理
1.同一类的不同对象,其成员数据之间是互相独立的。
2.当我们将类的某一个数据成员的声名为static,则油该类所生产的所有对象,其静态成员共享一个存储空间
static规定
1.static成员必须在类外定义并初始化
2.static数据成员和函数成员可以通过对象名引用也可以通过类名引用
3.static成员函数只能访问static数据成员,不能访问非static成员
4.普通成员函数可以访问static数据成员
静态数据成员
类外代码可以使用类名和作用域操作符来调用静态函数成员
静态函数成员只能引用属于该类的静态函数据成员或静态成员函数
类的友元
友元是C++提供的一种破坏数据封装和数据隐藏的机制
通过将一个模块声名为另一个模块的友元,一个模块能够引用到另一个模块中本是被隐藏的信息
可以使用友元函数和友元类
对象不能访问类的私有数据成员,但是友元类可以
友元
类的数据成员都设为私有的——良好的程序设计风格
如果外部函数需要直接访问类的数据成员:数据共有;友元。
友元函数
友元函数是在类声明中由friend修饰说明的非成员函数,在它的函数体中能够通过对象访问非成员函数,在它的函数体中能够通过对象名访问private和protected成员
作用:增加灵活性,使程序员可以在封装和隐藏性方面做合理选择
友元函数不是类的成员函数
但是可以访问类的私有数据成员
友元函数
类中私有和保护的成员在类外不能被访问。
友元函数是一种定义在类外部的普通函数,其特点是能够访问类中私有成员和保护成员,即类的访问权限的权限的限制对其不起作用。
友元函数不是成员函数,用法也与普通的函数不一致,只不过它能访问类中所有的数据。
友元函数的特点
友元函数近似于普通的函数,他不带有this指针,因此必须将对象名或对象的引用作为友元函数的参数,这样才能访问到对象的成员。
友元函数与一般函数的区别:
1.友元函数必须在类中声名,其函数体可在类内定义,也可在类外定义;
2.它可以访问该类中的所有成员(公有的、私有的和保护的),而一般函数只能访问类中的公有成员。
3.友元函数不是类的成员函数