欢迎来到天天文库
浏览记录
ID:38512398
大小:206.00 KB
页数:86页
时间:2019-06-14
《皮德常《面向对象的程序设计》课程ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第9章类的高级部分皮德常南京航空航天大学计算机科学与技术学院1主要内容9.1静态成员9.2友元9.3对象赋值问题9.4拷贝构造函数9.5运算符重载9.6对象组合29.1静态成员例:一个学生类,定义其对象张三、李四,他们分别维护着类成员的一份副本(学号、姓名、籍贯等)。如果要统计一个班学生总数?用类外的变量记录,违背了数据封装。用类的一个数据成员记录,导致多个副本,不仅冗余,而且势必造成数据不一致。39.1.1静态数据成员1.用关键字static声明;2.同一个类中的所有对象都共享该变量;3.必须在类外定义和初始化,用(::)来指明所属
2、的类。4.静态变量不依赖于对象而存在,无论是否定义该类的对象,这种类型的变量都存在。静态数据成员实际上是在类外定义的一个变量,它的生存期和整个程序的生存期一样,在定义对象之前,静态数据成员就已经存在。4classStaticDemo{staticintx;inty;public:voidputx(inta){x=a;}voidputy(intb){y=b;}intgetx(){returnx;}intgety(){returny;}};intStaticDemo::x;//静态变量x将被StaticDemo类的所有对象共享,例如:St
3、aticDemoobj1,obj2;obj1.putx(5);obj1.puty(l0);obj2.puty(20);cout<<"x:"<4、来调用静态成员函数。静态成员函数只能引用属于该类的静态数据成员或静态成员函数。见例【例9-2】。6//budget2.h文件的内容。classBudget{staticfloatcorpBudget;floatdivBudget;public:Budget(){divBudget=0;}voidaddBudget(floatb){divBudget+=b;corpBudget+=divBudget;}staticvoidmainOffice(float);floatgetDivBudget(){returndivBudget;}flo5、atgetCorpBudget(){returncorpBudget;}};7//Contentsofbudget2.cpp#include"budget2.h"floatBudget::corpBudget=0;//Definitionofstaticmemberfunction.voidBudget::mainOffice(floatmoffice){corpBudget+=moffice;}8//主程序pr9-2.cpp的内容#include"budget2.h“voidmain(){floatamount;inti;float6、bud;cout<<"Entermainoffice'sbudgetrequest:";cin>>amount;Budget::mainOffice(amount);Budgetdivisions[4];9for(i=0;i<4;i++){cout<<"EnterthebudgetforDivision";cout<<(i+1)<<"";cin>>bud;divisions[i].addBudget(bud);}cout<<"Herearethedivisionbudget:";for(i=0;i<4;i++){cout<<"7、tDivision"<<(i+1)<<"t$";cout<8、数可以是一个外部函数,也可以是另外一个类的函数成员。3.将某个函数声明为一个类的友元方式,前面加friend。12【例9-3】求两个点之间的距离。classPoint{intxPos,yPos;public:Point(
4、来调用静态成员函数。静态成员函数只能引用属于该类的静态数据成员或静态成员函数。见例【例9-2】。6//budget2.h文件的内容。classBudget{staticfloatcorpBudget;floatdivBudget;public:Budget(){divBudget=0;}voidaddBudget(floatb){divBudget+=b;corpBudget+=divBudget;}staticvoidmainOffice(float);floatgetDivBudget(){returndivBudget;}flo
5、atgetCorpBudget(){returncorpBudget;}};7//Contentsofbudget2.cpp#include"budget2.h"floatBudget::corpBudget=0;//Definitionofstaticmemberfunction.voidBudget::mainOffice(floatmoffice){corpBudget+=moffice;}8//主程序pr9-2.cpp的内容#include"budget2.h“voidmain(){floatamount;inti;float
6、bud;cout<<"Entermainoffice'sbudgetrequest:";cin>>amount;Budget::mainOffice(amount);Budgetdivisions[4];9for(i=0;i<4;i++){cout<<"EnterthebudgetforDivision";cout<<(i+1)<<"";cin>>bud;divisions[i].addBudget(bud);}cout<<"Herearethedivisionbudget:";for(i=0;i<4;i++){cout<<"
7、tDivision"<<(i+1)<<"t$";cout<8、数可以是一个外部函数,也可以是另外一个类的函数成员。3.将某个函数声明为一个类的友元方式,前面加friend。12【例9-3】求两个点之间的距离。classPoint{intxPos,yPos;public:Point(
8、数可以是一个外部函数,也可以是另外一个类的函数成员。3.将某个函数声明为一个类的友元方式,前面加friend。12【例9-3】求两个点之间的距离。classPoint{intxPos,yPos;public:Point(
此文档下载收益归作者所有