C教程第07章类与对象-5类的静态成员及常量.doc

C教程第07章类与对象-5类的静态成员及常量.doc

ID:62033166

大小:47.50 KB

页数:12页

时间:2021-04-15

C教程第07章类与对象-5类的静态成员及常量.doc_第1页
C教程第07章类与对象-5类的静态成员及常量.doc_第2页
C教程第07章类与对象-5类的静态成员及常量.doc_第3页
C教程第07章类与对象-5类的静态成员及常量.doc_第4页
C教程第07章类与对象-5类的静态成员及常量.doc_第5页
资源描述:

《C教程第07章类与对象-5类的静态成员及常量.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、7章类与对象7.1类和对象(定义及使用)初步7.2成员函数的重载7.3 对象的初始化、构造函数与析构函数7。 4类的定义及其使用7. 5类的静态成员及常量成员7。5。1静态成员7.5。1。1静态成员数据1.静态成员数据的定义,与静态类型的变量的定义方式一样,要在成员数据的定义之前加关键字static。2.静态成员数据必须有确定的值,但由于在类的定义中不能对成员数据直接进行初始化,故必须在类定义的外部对静态成员数据再声明一次,并进行初始化,此时,前面不需要加关键字static。同时为了保持静态成员数据

2、取值的一致性,一般在类的构造函数中不给静态成员数据设置初值。对静态成员数据初始化的顺序为它们在类体外声明的顺序.3。在同一个程序中,当一个类有多个对象时,则这些对象中的静态成员数据都共享同一个存储空间,即在定义类时,就为静态成员数据分配存储单元,以后创建该类的对象时,将不再为该静态成员数据分配存储单元,也不会对该静态成员数据初始化。静态成员数据初始化格式:〈类型>〈类名>::〈静态成员数据〉= <数值>;4。类的静态成员数据具有全局变量的某些特征,比如在程序开始运行时就为静态成员数据分配存储空间,但

3、它只有类的作用域。即在执行main()之前,首先对静态成员数据和全局变量分配存储空间并进行初始化,当整个程序结束时才撤消静态成员数据和全局变量.5.静态成员数据也可以分为公有的、私有的和受保护的静态成员。对公有静态成员,即可以通过类的对象进行访问,也可以通过类名直接访问(这是静态成员数据与一般成员数据的另一个区别)。格式:<类名>::<静态成员数据〉私有的和保护的静态成员数据则只能被该类的公有成员函数访问。6.值得注意的是,在创建任何对象之前,类的静态成员数据已经存在并可以引.7.静态成员数据也可以

4、是用户自定义类型的数据。7。5.1.2静态成员函数1.定义静态成员函数时,只要在成员函数名前用关键字static修饰即可。2。静态成员函数属于整个类,它是由该类的所有对象所共享的成员函数,它不属于某个对象.因此它不含有隐含的*this指针参数,故它不能像普通成员函数那样直接访问对象中的非静态的成员(成员函数和成员数据),即静态成员函数只能访问所在类的静态的成员(成员函数和成员数据)、全局变量、外部函数等。(因为它们不属于任一个特定对象)。3.静态成员函数若要访问非静态成员,则必须借助于类的对象(对象

5、名或指向对象的函数参数)。4.静态成员函数首先是一个成员函数,它可以定义为内联函数,也可以在类体外定义,但此时函数名前不必加关键字static。5。可以通过所在类的对象访问静态成员函数(公有的)外,还可以通过类名直接访问,格式为:<类名〉::〈静态成员函数名〉(<实参表>)6.静态成员函数不能为const成员函数。7.5.1.3静态成员数据和静态成员函数应用举例例1静态成员数据的定义及应用#include〈iostream。h>#includeclass CCounter{ st

6、atic int count ;  //定义静态成员数据intobjnumber; //表示对象编号public:CCounter(){count++;objnumber=count; }voidShow(){cout<<"obj"<<objnumber<<’t’〈<”count="<<count<〈’';}};intCCounter::count=0;//A 在类定义外声明静态成员数据并初始化,如果不赋初值,//可以不赋初值,此时系统会自动赋初值0。void main(){CCountero

7、bj1;obj1。Show( );cout〈<”—-----——-—--——---—-—--\n“;CCounterobj2;obj1。Show( );obj2。Show( );cout〈〈"--—--————-——--—---—--— “; CCounterobj3; obj1。Show();obj2。Show(); obj3。Show() ;}执行结果:obj1 count=1-—-———-—-——---—-—-——--obj1 count=2obj2count=2--—----------

8、——-----—-obj1 count=3obj2 count=3obj3count=3得注意的是,在创建任何对象之前,类的静态成员数据已经存在并可以引用。例2分析程序输出的结果类的静态成员数据具有全局变量的某些特征,在执行main()之前,首先对静态成员数据和全局变量分配存储空间并进行初始化,当整个程序结束时才撤消静态成员数据和全局变量,但它只有类的作用域。得注意的是,在创建任何对象之前,类的静态成员数据已经存在并可以引用#include〈iostream.h>cl

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

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

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