第8章 静态成员、友员与成员指针.ppt

第8章 静态成员、友员与成员指针.ppt

ID:60767669

大小:168.50 KB

页数:20页

时间:2020-02-02

第8章 静态成员、友员与成员指针.ppt_第1页
第8章 静态成员、友员与成员指针.ppt_第2页
第8章 静态成员、友员与成员指针.ppt_第3页
第8章 静态成员、友员与成员指针.ppt_第4页
第8章 静态成员、友员与成员指针.ppt_第5页
资源描述:

《第8章 静态成员、友员与成员指针.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第8章静态成员、友员与成员指针一个类的属性或方法可以采用static进行修饰,这样的成员称为静态成员。8.1静态成员8.1.1静态属性1.静态属性是只在对象之间公用的“全局变量”函数共用一份信息,采用全局变量来实现。类的对象共用一份信息,采取的方法是将其定义为类的静态属性。2.静态属性的定义与初始化staticintno;//类型任意与普通属性不同的是,静态属性必须在类定义之外进行定义性声明,包括初始化,如:intPointX::no=0;//仍使用“类名::”作为限定声明不会将no的私有属性变成公开静态属性声明也

2、是对该属性初始化的唯一场所和时机,在没有提供初始值时,系统将其清0。类定义外的静态属性声明不能再加static关键字。在.h和.cpp文件中,静态属性的定义性声明语句应置于.cpp文件中,所有的类方法实现之外。静态属性是属于类而不是对象的。(sizeof(PointX)的值可验证)静态属性在程序运行开始时初始化3.静态属性的表示方法类名::静态成员名如PointX::noclassPointX{intx,y;public:staticintno;PointX(intx1,inty1):x(x1),y(y1){no+

3、+;}};intPointX::no=0;intmain(){PointXp1(1,1),p2(2,3),p3(3,1);cout<

4、tmain(){PointXp1(1,1),p2(2,3),p3(3,1);cout<

5、妨将一个对象看成是一本私人的日记,通常是不允许外人去翻看的,但朋友就可能享有一定的特权,看到日记的内容。如果希望一个普通函数能够直接访问类的成员,也可以将其定义为类的“朋友”。因为这个普通函数并不是类的成员,故称为类的友员。1.使用普通函数作为类的友员如果要将某个普通函数作为类的友员,必须在类定义中进行声明,形式为:classX{...public:friendtype友员函数名(形式参数表);};#includeusingnamespacestd;classA{intm;//类的私有成员pub

6、lic:friendvoidsetm(A&to,intm1);};voidsetm(A&to,intm1)//普通函数,不属于类{to.m=m1;//类的私有成员对友员也是公开的}intmain(){Ato;setm(to,10);}2.使用友员时应注意的问题将一个普通函数定义为类的友员的目的是使其能直接访问类的非公开成员,因此,友员一般要有类对象、类对象引用或类指针为参数(通常是引用),以使友员能借助它们引用类的成员。那么,究竟是什么使我们甘冒破坏类的封装性的危险而将普通函数定义成类的友员呢?最主要的原因是效率。

7、使用友员还有一些原因,如可以使运算符重载更加灵活等,但友员并不是一种必需的技术。3.向前引用类定义如果一个类使用在前而定义在后,需要先进行类声明,语法形式如下:class类名;//类声明语句这种声明称为类定义的向前引用,也称为超前声明。classB;classA{...public:friendvoidset(A&oa,B&ob);};classB{...public:friendvoidset(A&oa,B&ob);};4.类方法作为友员和友类一个类的方法可以定义为另一个类的友员。例如,要将类B的方法intfn(

8、int,A&)定义成类A的友员,应在类A的定义中加入如下声明:friendintB::fn(int,A&);这使B的fn方法可以直接访问类A的所有成员。此时需要对类A做超前声明。一个类定义为另一个类的友员,称为友类。例如,若要将类B定义为类A的友类,必须在类A的定义中加入如下声明:friendclassB;//在A的定义中声明B是A的友类这相当于将类B的所有

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。