中国高校课件下载中心 》 教学资源 》 大学文库

南京航空航天大学:《程序设计》课程教学课件(PPT讲稿,二)Chapter 4-类的高级部分

文档信息
资源类别:文库
文档格式:PPT
文档页数:87
文件大小:325.5KB
团购合买:点击进入团购
内容简介
南京航空航天大学:《程序设计》课程教学课件(PPT讲稿,二)Chapter 4-类的高级部分
刷新页面文档预览

第4章类的高级部分陈哲教授南京航空航天大学计算机科学与技术学院

1 第 4 章 类的高级部分 陈哲 教授 南京航空航天大学 计算机科学与技术学院

主要内容静态成员4.1友元4.2对象赋值问题4.3拷贝构造函数4.4运算符重载4.54.6对象组合

2 主要内容 4.1 静态成员 4.2 友元 4.3 对象赋值问题 4.4 拷贝构造函数 4.5 运算符重载 4.6 对象组合

静态成员4.1·例:一个学生类,定义其对象张三、李四,他们分别维护着类成员的一份副本(学号、姓名、籍贯等)。如果要统计一个班学生总数?一用类外的变量记录,违背了数据封装。一用类的一个数据成员记录,导致多个副本,不仅穴余,而且势必造成数据不一致

3 4.1 静态成员 • 例:一个学生类,定义其对象张三、李四,他 们分别维护着类成员的一份副本(学号、姓名、 籍贯等)。 • 如果要统计一个班学生总数? – 用类外的变量记录,违背了数据封装。 – 用类的一个数据成员记录,导致多个副本, 不仅冗余,而且势必造成数据不一致

静态数据成员4.1.11.用关键字static声明:2.同一个类中的所有对象都共享该变量:3.必须在类外定义和初始化,用:)来指明所属的类。4.静态变量不依赖于对象而存在,无论是否定义该类的对象,这种类型的变量都存在。静态数据成员实际上是在类外定义的一个变量,它的生存期和整个程序的生存期一样,在定义对象之前,静态数据成员就已经存在

4 4.1.1 静态数据成员 1. 用关键字static声明; 2. 同一个类中的所有对象都共享该变量; 3. 必须在类外定义和初始化,用(::)来指明所属的类。 4. 静态变量不依赖于对象而存在,无论是否定义该类的 对象,这种类型的变量都存在。静态数据成员实际 上是在类外定义的一个变量,它的生存期和整个程 序的生存期一样,在定义对象之前,静态数据成员 就已经存在

class StaticDemo static int x;inty;public:void putx(int a) x=a ;void puty(int b) y=b ;int getx( return x;int getyO return y;int StaticDemo::x ;

5 class StaticDemo { static int x ; int y ; public: void putx( int a){ x=a ; } void puty( int b ){ y=b ; } int getx( ) { return x ; } int gety( ) { return y ; } } ; int StaticDemo::x ;

1/静态变量x将被StaticDemo类的所有对象共享,例如:StaticDemoobjl,obj2;objl.putx(5);objl.puty(10);obj2.puty(20);cout<<"x: "<< objl.getx(0) <<" " << obj2.getx0) << endl ;cout <<"y: "<< objl.gety() <<" "<< obj2.gety0) << endl ;

// 静态变量x将被StaticDemo类的所有对象共享,例如: StaticDemo obj1, obj2 ; obj1.putx(5) ; obj1.puty( l0 ) ; obj2.puty(20 ) ; cout << "x: "<< obj1.getx( ) << " " << obj2.getx( ) << endl ; cout << "y: "<< obj1.gety( ) <<" "<< obj2.gety( ) << endl ;

静态函数成员4.1.2静态函数成员是类中的一个函数,有static修饰。静态函数成员和静态数据成员类似,在对象生成之前也已经存在。这就是说在对象产生之前,静态的函数成员就能访问其它静态成员。类外代码可以使用类名和作用域操作符来调用静态成员函数。静态成员函数只能引用属于该类的静态数据成员或静态成员函数。见例【例4-2】

7 4.1.2 静态函数成员 – 静态函数成员是类中的一个函数,有static修饰。 – 静态函数成员和静态数据成员类似,在对象生成 之前也已经存在。这就是说在对象产生之前,静 态的函数成员就能访问其它静态成员。 – 类外代码可以使用类名和作用域操作符来调用静 态成员函数。 – 静态成员函数只能引用属于该类的静态数据成员 或静态成员函数。见例【例4-2】

办公室预算子公司1预算公司总预算子公司2预算子公司3预算子公司4预算

公 司 总 预 算 办公室预算 子公司1预算 子公司2预算 子公司3预算 子公司4预算

// budget2.h文件的内容。class Budgetstatic float corpBudget;float divBudget;public:Budget(){ divBudget=O;voidaddBudget( float b)divBudget += b;corpBudget += divBudget;人voidstaticmainOffice(float);floatgetDivBudget()return divBudget;floatgetCorpBudget( return corpBudget;)7

// budget2.h文件的内容 。 class Budget { static float corpBudget; float divBudget; public: Budget( ) { divBudget = 0; } void addBudget( float b) { divBudget += b; corpBudget += divBudget; } static void mainOffice( float ); float getDivBudget( ) { return divBudget; } float getCorpBudget( ){ return corpBudget;} };

//Contents of budget2.cpp#include"budget2.h"floatBudget::corpBudget=O;// Definition of static memberfunctionvoid Budget::mainOffice(float moffice)corpBudget +=moffice;

// Contents of budget2.cpp #include "budget2.h" float Budget::corpBudget = 0 ; // Definition of static member function. void Budget::mainOffice(float moffice) { corpBudget += moffice; }

刷新页面下载完整文档
VIP每日下载上限内不扣除下载券和下载次数;
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
相关文档