南京航空航天大学:《C++》课程电子教案(PPT课件讲稿)第4章 类的高级部分

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

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

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

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

class Static Demo i static int x i int y public: void putx( int a)t void put int b y=b; int getxoi return X int gety (i return y 000 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 ;

∥静态变量x将被 Staticdemo类的所有对象共享,例如: StaticDemo objl, obj2 i objl putx ( 5); objl put(10) obj2 put (20) cout <<x:<<objlgetx(<<w<<obj2getx(<< endl cout <<"y:<< objlgety(<<w<< obj2gety(<< end
// 静态变量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 ;

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

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

∥ budget.h文件的内容。 class budget t static float corp budget float div budget; public Budget(i div budget=0; void addBudget( float b) div Budget + b corp budget + div budget static void mainoffice( float float getDiv Budget(i return div budget; 3 float getCorpbudgetoi return corp Budget; 3
// 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;} };

l Contents of budget2 cpp #include budget.hw float Budget: corp Budget=0; // Definition of static member function void Budget: mainoffice(float office) corp budget + office
// Contents of budget2.cpp #include "budget2.h" float Budget::corpBudget = 0 ; // Definition of static member function. void Budget::mainOffice(float moffice) { corpBudget += moffice; }
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 西安电子科技大学:《计算机网络 Computer Networks》课程教学资源(PPT课件讲稿)概述(主讲:岳鹏).ppt
- 计算机语言的学科形态与发展历程(PPT课件讲稿).ppt
- 西安电子科技大学:《计算机网络 Computer Networks》课程教学资源(PPT课件讲稿)第一章 概述(主讲:马涛).pptx
- 北京航空航天大学:动态拼车服务中的高效插入操作(PPT讲稿)An Efficient Insertion Operator in Dynamic Ridesharing Services.pptx
- 中国科学技术大学:《计算机体系结构》课程教学资源(PPT课件讲稿)第三章 流水线技术.pptx
- 《网络算法学》课程教学资源(PPT课件讲稿)第二部分 端节点算法学 第五章 拷贝数据.ppt
- 中国科学技术大学:《数值分析》课程教学资源(PPT课件讲稿)第1章 插值.ppt
- 中国科学技术大学:《算法基础》课程教学资源(PPT课件讲稿)第四讲 递归和分治策略(主讲人:吕敏).pptx
- 中国科学技术大学:《现代密码学理论与实践》课程教学资源(PPT课件讲稿)第10章 密钥管理与其他公钥体制.pptx
- 《数据结构 Data Structure》课程教学资源(PPT课件讲稿)第四章 数组、串与广义表.ppt
- 《Computer Networking:A Top Down Approach》英文教材教学资源(PPT课件讲稿,6th edition)Chapter 1 Introduction.ppt
- 《数据结构》课程教学资源(PPT课件讲稿)第五章 树.ppt
- 《Computer Networking:A Top Down Approach》英文教材教学资源(PPT课件讲稿,6th edition)Chapter 2 Application Layer.ppt
- 中国科学技术大学:A Practical Verification Framework for Preemptive OS Kernels(PPT讲稿).ppt
- 《算法设计与分析基础》课程教学课件(PPT讲稿)Chapter 2 Fundamentals of the Analysis of Algorithm Efficiency.ppt
- 中国医科大学:《计算机基础》课程教学资源(PPT课件)第8章 Internet应用基础.ppt
- RDA Testing & Comparison with AACR2(session 1).ppt
- 《Computer Networking:A Top Down Approach》英文教材教学资源(PPT课件讲稿,6th edition)Chapter 2 Application Layer.ppt
- 《计算机网络》课程电子教案(PPT教学课件)第二章 物理层.pptx
- 同济大学:企业电子商务系统(PPT讲稿)Enterprise Electronic Business Systems.ppt
- 《神经网络和模糊系统》课程教学资源(PPT讲稿)第四章 突触动力学、非监督学习.ppt
- 《Computer Networking:A Top Down Approach》英文教材教学资源(PPT课件讲稿,4th edition)Chapter 1 Introduction.ppt
- 清华大学:不确定型决策(PPT讲稿)Decision Making under Uncertainty.pptx
- 西安电子科技大学:《计算机网络 Computer Networks》课程教学资源(PPT课件讲稿)第五章 传输层.pptx
- 《机器学习》课程教学资源(PPT课件讲稿)第七章 贝叶斯分类器 MACHINE LEARNING.pptx
- 清华大学:计算机科学与技术(PPT讲稿)组播 Multicast.pptx
- 《网络算法学》课程教学资源(PPT课件讲稿)第四章 原则的运用.ppt
- 《电子商务概论》课程教学资源(PPT课件讲稿)第7章 电子商务与物流.ppt
- 《计算机网络》课程教学资源(PPT课件讲稿,第三版)Chapter 04 网络层 Network Layer.ppt
- Efficient Algorithms for Optimal Location Queries in Road Networks.ppt
- 北京大学:《项目成本管理》课程教学资源(PPT课件讲稿)质量管理计划(主讲:周立新).ppt
- Flexible Online Task Assignment in Real-Time Spatial Data.pptx
- 《机器学习》课程教学资源(PPT课件讲稿)第10讲 决策树.ppt
- 《物联网技术导论》课程教学资源(PPT讲稿)Continuous Scanning with Mobile Reader in RFID Systems - an Experimental Study.pptx
- 西安电子科技大学:《计算机网络 Computer Networks》课程教学资源(PPT课件讲稿)第六章 应用层.pptx
- 沈阳理工大学:《计算机网络技术及应用》课程教学资源(PPT课件讲稿)第一章 互联网与网站 Interent & Website(主讲:廉哲).ppt
- 香港科技大学:Transaction Management、Serializability Theory and Concurrency Control、Lock-Based Protocols、Deadlock Problems、Recovery.ppt
- 《大学计算机基础》课程电子教案(PPT教学课件)第5章 多媒体技术基础.ppt
- 中国科学院:超级计算平台Linux初级培训(PPT讲稿,2009.11).ppt
- Routing in Vehicular Ad Hoc Network(PPT课件讲稿).ppt