欢迎来到天天文库
浏览记录
ID:49823794
大小:146.50 KB
页数:28页
时间:2020-02-28
《《C++程序设计教程 第2版》教学素材PPT讲稿(教学课件).ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第11章类和对象的其他特性11.1静态成员11.2友元11.3常数据成员和常成员函数11.1.1静态数据成员1.静态数据成员的定义一个类的不同对象,其数据成员的存储空间是相互独立的。11.1静态成员"Cheng"'F'20ab"Zhang"'M'18classPerson{charName[20];//姓名charSex;//性别intAge;//年龄public:…};Persona("Cheng",'F',20),b("Zhang",'M',18);如果将类的一个成员定义成静态型的,则该类的所有对象的该成员共用同一存储空间。classSa
2、mple{private:inta,b,c;staticintd;//定义静态数据成员……}s1,s2,s3;abcs1s2s3abcabcdSample::静态数据成员是属于类的。2.静态数据成员的初始化——必需在类体外进行classSample{private:inta,b,c;staticintd;//定义静态数据成员……}s1,s2,s3;intSample::d=10;//初始化3.静态数据成员的引用——例11.1例11.1静态数据成员的使用#includeclassSample{intn;staticint
3、sum;//静态成员public:Sample(intx){n=x;}voidadd(){sum+=n;}voiddisp(){cout<<"n="<4、zeof(b)<5、行结果是:n=2,sum=10n=3,sum=10n=5,sum=1011.1.2静态成员函数静态成员函数属于类,就像静态数据成员属于类一样。(1)可以通过类名或对象名调用静态成员函数。(2)在静态成员函数中只能直接访问静态数据成员。例11.2静态成员函数的使用#includeclassSample{inta;staticintb;public:staticintc;Sample(intx){a=x;b+=x;}staticvoiddisp(Samples){cout<<"a="<6、l;}};intSample::b=10;//静态数据成员赋初值intSample::c=20;//静态数据成员赋初值voidmain(){Samples1(2),s2(3);Sample::disp(s1);//可改写为s1.disp(s1);或s2.disp(s1);Sample::disp(s2);//可改写为s1.disp(s2);或s2.disp(s2);cout<<"c="<7、.1友元函数(1)类具有封装性和信息的隐蔽性。(2)只有在类内可以访问私有成员。(3)在类外,只能通过公有函数接口才能访问私有成员。例11.3通过公有函数接口访问私有成员#include#includeclassPoint{intx,y;public:Point(inta=0,intb=0){x=a;y=b;}例11.3(续1)~Point(){}voidShow(){cout<<"Point("<8、ny;}};doubledistance(Point&p1,Point&p2){//注意:此函数是普通函数参见returnsqrt((p1.Getx()-p2.Ge
4、zeof(b)<5、行结果是:n=2,sum=10n=3,sum=10n=5,sum=1011.1.2静态成员函数静态成员函数属于类,就像静态数据成员属于类一样。(1)可以通过类名或对象名调用静态成员函数。(2)在静态成员函数中只能直接访问静态数据成员。例11.2静态成员函数的使用#includeclassSample{inta;staticintb;public:staticintc;Sample(intx){a=x;b+=x;}staticvoiddisp(Samples){cout<<"a="<6、l;}};intSample::b=10;//静态数据成员赋初值intSample::c=20;//静态数据成员赋初值voidmain(){Samples1(2),s2(3);Sample::disp(s1);//可改写为s1.disp(s1);或s2.disp(s1);Sample::disp(s2);//可改写为s1.disp(s2);或s2.disp(s2);cout<<"c="<7、.1友元函数(1)类具有封装性和信息的隐蔽性。(2)只有在类内可以访问私有成员。(3)在类外,只能通过公有函数接口才能访问私有成员。例11.3通过公有函数接口访问私有成员#include#includeclassPoint{intx,y;public:Point(inta=0,intb=0){x=a;y=b;}例11.3(续1)~Point(){}voidShow(){cout<<"Point("<8、ny;}};doubledistance(Point&p1,Point&p2){//注意:此函数是普通函数参见returnsqrt((p1.Getx()-p2.Ge
5、行结果是:n=2,sum=10n=3,sum=10n=5,sum=1011.1.2静态成员函数静态成员函数属于类,就像静态数据成员属于类一样。(1)可以通过类名或对象名调用静态成员函数。(2)在静态成员函数中只能直接访问静态数据成员。例11.2静态成员函数的使用#includeclassSample{inta;staticintb;public:staticintc;Sample(intx){a=x;b+=x;}staticvoiddisp(Samples){cout<<"a="<6、l;}};intSample::b=10;//静态数据成员赋初值intSample::c=20;//静态数据成员赋初值voidmain(){Samples1(2),s2(3);Sample::disp(s1);//可改写为s1.disp(s1);或s2.disp(s1);Sample::disp(s2);//可改写为s1.disp(s2);或s2.disp(s2);cout<<"c="<7、.1友元函数(1)类具有封装性和信息的隐蔽性。(2)只有在类内可以访问私有成员。(3)在类外,只能通过公有函数接口才能访问私有成员。例11.3通过公有函数接口访问私有成员#include#includeclassPoint{intx,y;public:Point(inta=0,intb=0){x=a;y=b;}例11.3(续1)~Point(){}voidShow(){cout<<"Point("<8、ny;}};doubledistance(Point&p1,Point&p2){//注意:此函数是普通函数参见returnsqrt((p1.Getx()-p2.Ge
6、l;}};intSample::b=10;//静态数据成员赋初值intSample::c=20;//静态数据成员赋初值voidmain(){Samples1(2),s2(3);Sample::disp(s1);//可改写为s1.disp(s1);或s2.disp(s1);Sample::disp(s2);//可改写为s1.disp(s2);或s2.disp(s2);cout<<"c="<7、.1友元函数(1)类具有封装性和信息的隐蔽性。(2)只有在类内可以访问私有成员。(3)在类外,只能通过公有函数接口才能访问私有成员。例11.3通过公有函数接口访问私有成员#include#includeclassPoint{intx,y;public:Point(inta=0,intb=0){x=a;y=b;}例11.3(续1)~Point(){}voidShow(){cout<<"Point("<8、ny;}};doubledistance(Point&p1,Point&p2){//注意:此函数是普通函数参见returnsqrt((p1.Getx()-p2.Ge
7、.1友元函数(1)类具有封装性和信息的隐蔽性。(2)只有在类内可以访问私有成员。(3)在类外,只能通过公有函数接口才能访问私有成员。例11.3通过公有函数接口访问私有成员#include#includeclassPoint{intx,y;public:Point(inta=0,intb=0){x=a;y=b;}例11.3(续1)~Point(){}voidShow(){cout<<"Point("<8、ny;}};doubledistance(Point&p1,Point&p2){//注意:此函数是普通函数参见returnsqrt((p1.Getx()-p2.Ge
8、ny;}};doubledistance(Point&p1,Point&p2){//注意:此函数是普通函数参见returnsqrt((p1.Getx()-p2.Ge
此文档下载收益归作者所有