欢迎来到天天文库
浏览记录
ID:48769471
大小:89.00 KB
页数:26页
时间:2020-01-22
《《C++程序设计》电子教案第6章 静态成员和友元.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第6章静态成员与友元6.1静态成员6.2友元函数6.3友元类6.1静态成员6.1.1静态数据成员6.1.2静态成员函数返回首页6.1.1静态数据成员C++中,同一个类定义多个对象时,每个对象拥有各自的数据成员(不包括静态数据成员),而所有对象共享一份成员函数和一份静态数据成员。静态数据成员是类的所有对象中共享的成员,而不是某个对象的成员,因此可以实现多个对象间的数据共享。静态数据成员不属于任何对象,它不因对象的建立而产生,也不因对象的析构而删除,它是类定义的一部分,所以使用静态数据成员不会破坏类的隐蔽性。静态数据成员的使用
2、方法如下:(1)静态数据成员的定义与一般数据成员相似,但前面要加上static关键词。(2)静态数据成员的初始化与一般数据成员不同,静态数据成员初始化的格式如下:<类型><类名>::<静态数据成员>=<值>;(3)在引用静态数据成员时采用格式:<类名>::<静态数据成员>(4)静态数据成员是静态存储的,它是静态生存期,必须对它进行初始化。例6-1:用静态数据成员实现班会费管理程序。#includeclassperson{char*name;intage;staticintcount;//定义静态成员
3、,存放班会费public:voidsetData(char*s,intn){name=s;age=n;};voidgetData(intn){count=count+n;};voidspend(intn){count=count-n;};voiddisplay(){cout<4、ry",18);demo1.getData(1000);demo2.display();//输出1000demo2.spend(300);demo1.display();//输出700}返回本节6.1.2静态成员函数静态成员函数与静态数据成员类似,也是从属于类,静态成员函数的定义是在一般函数定义前加上static关键字。调用静态成员函数的格式如下:<类名>::<静态成员函数名>(<参数表>);静态成员函数与静态数据成员一样,与类相联系,不与对象相联系,只要类存在,静态成员函数就可以使用,所以访问静态成员函数时不需要对象。静5、态成员函数没有this指针,因此,静态成员函数只能直接访问类中的静态成员,若要访问类中的非静态成员时,必须借助对象名或指向对象的指针。例6-3:用静态成员函数实现班会费管理程序。#includeclassperson{char*name;intage;staticintcount;//定义静态成员,存放班会费public:voidsetData(char*s,intn){name=s;age=n;};voidgetData(intn){count=count+n;};voidspend(intn){6、count=count-n;};staticvoiddisplay(){cout<7、lay();//用对象的类型去调用静态成员函数}例6-4:写出下面程序的执行结果。#includeclassM{public:M(inta){A=a;B+=a;}staticvoidf1(Mm);private:intA;staticintB;};voidM::f1(Mm){cout<<"A="<8、5),Q(10);M::f1(P);//访问静态成员函数,前面必须是类名,下同M::f1(Q);}输出结果为:A=5B=15A=10B=15返回本节6.2友元函数6.2.1友元函数的说明6.2.2友元函数的使用返回首页6.2.1友元函数的说明定义友元函数的方式是在类定义中用关键词friend说明该函数,
4、ry",18);demo1.getData(1000);demo2.display();//输出1000demo2.spend(300);demo1.display();//输出700}返回本节6.1.2静态成员函数静态成员函数与静态数据成员类似,也是从属于类,静态成员函数的定义是在一般函数定义前加上static关键字。调用静态成员函数的格式如下:<类名>::<静态成员函数名>(<参数表>);静态成员函数与静态数据成员一样,与类相联系,不与对象相联系,只要类存在,静态成员函数就可以使用,所以访问静态成员函数时不需要对象。静
5、态成员函数没有this指针,因此,静态成员函数只能直接访问类中的静态成员,若要访问类中的非静态成员时,必须借助对象名或指向对象的指针。例6-3:用静态成员函数实现班会费管理程序。#includeclassperson{char*name;intage;staticintcount;//定义静态成员,存放班会费public:voidsetData(char*s,intn){name=s;age=n;};voidgetData(intn){count=count+n;};voidspend(intn){
6、count=count-n;};staticvoiddisplay(){cout<7、lay();//用对象的类型去调用静态成员函数}例6-4:写出下面程序的执行结果。#includeclassM{public:M(inta){A=a;B+=a;}staticvoidf1(Mm);private:intA;staticintB;};voidM::f1(Mm){cout<<"A="<8、5),Q(10);M::f1(P);//访问静态成员函数,前面必须是类名,下同M::f1(Q);}输出结果为:A=5B=15A=10B=15返回本节6.2友元函数6.2.1友元函数的说明6.2.2友元函数的使用返回首页6.2.1友元函数的说明定义友元函数的方式是在类定义中用关键词friend说明该函数,
7、lay();//用对象的类型去调用静态成员函数}例6-4:写出下面程序的执行结果。#includeclassM{public:M(inta){A=a;B+=a;}staticvoidf1(Mm);private:intA;staticintB;};voidM::f1(Mm){cout<<"A="<8、5),Q(10);M::f1(P);//访问静态成员函数,前面必须是类名,下同M::f1(Q);}输出结果为:A=5B=15A=10B=15返回本节6.2友元函数6.2.1友元函数的说明6.2.2友元函数的使用返回首页6.2.1友元函数的说明定义友元函数的方式是在类定义中用关键词friend说明该函数,
8、5),Q(10);M::f1(P);//访问静态成员函数,前面必须是类名,下同M::f1(Q);}输出结果为:A=5B=15A=10B=15返回本节6.2友元函数6.2.1友元函数的说明6.2.2友元函数的使用返回首页6.2.1友元函数的说明定义友元函数的方式是在类定义中用关键词friend说明该函数,
此文档下载收益归作者所有