已阅读5页,还剩21页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第 4 章 常对象、重载和引用,C+程序设计,2,本章主要内容,3.6 共有数据的保护:const 3.9.1 静态数据成员 1.3.7 引用(reference) 4 运算符重载(overloading),3,3.6 常类型 const,目的:对于既需要共享,又需要防止改变的数据声明为常量。常类型的对象必须进行初始化,而且不能被更新。常对象:其数据成员全部为常变量且必须有初始值。类名 const 对象名,4,1、常对象举例,class A public: A(int i,int j) x=i; y=j; . private: int x,y;A const a(3,4); /a是常对象,不能被更新,5,2、常成员函数(专门为常对象定义的)格式: 类型说明符 函数名(参数表)const;实现部分也要带const关键字。功能: 常成员函数不能更新对象的数据成员,也不能调用类中没有用const修饰的成员函数。调用: 通过常对象只能调用它的常成员函数。重载函数:const关键字可以被用于参与对重载函数的区分,6,常成员函数举例,#includeusing namespace std;class R public: R(int r1, int r2)R1=r1;R2=r2; void print( ); void print( ) const; /声明 private: int R1,R2;;,7,void R:print() coutR1:R2endl;void R:print( ) const /定义常成员函数 coutR1;R2endl;void main() R a(5,4); a.print(); /调用void print() const R b(20,52); /常对象 b.print(); /调用void print() const,46,8,3、常数据成员:使用const说明的数据成员。只能用构造函数的参数初始化表进行初始化。,#includeusing namespace std;class Apublic:A(int i);void print();const int,9,3.9.1 静态数据成员,目的:实现同类下各对象的数据共享。在内存中只占一份空间,而不是每个对象分别一份。 静态数据成员的值对所有对象都是一样的。,10,对变量起另外一个名字 (外号),这个名字称为该变量的引用。, & = ;,其中原变量名必须是一个已定义过的变量。如:int max ;int ,refmax并没有重新在内存中开辟单元,只是引用max的单元。max与refmax在内存中占用同一地址,即同一地址两个名字。,1.3.7 引用,11,max,refmax,5,10,int max ;int ,max=5 ;,20,refmax=10;,refmax=max+refmax;,max与refmax同一地址,1、引用与变量,12,对引用类型的变量,说明以下几点:1、引用在定义的时候要初始化。,2、对引用的操作就是对被引用的变量的操作。,int ,int ,错误,没有具体的引用对象,max是已定义过的变量,3、 引用类型变量的初始化值不能是一个常数。如:int ,13,指针与引用的区别:1、指针是通过地址间接访问某个变量,而引用是通过别名直接访问某个变量。2、引用必须初始化,而一旦被初始化后不得再改为其它变量的别名。,当&a的前面有类型符时(如int &a),它必然是对引用的声明;如果前面无类型符(如cout&a),则是取变量的地址。,14,2、引用与函数,引用的用途主要是用来作函数的参数或函数的返回值。,引用作函数的形参,实际上是在被调函数中对实参变量进行操作。,15,void main int x = 7, y=10; swap(x, y); coutxy; /?,void swap ( int sx, int sy ) int value; value = sx; /语句 sx = sy; /语句 sy = value; /语句 ,7,10,实参变量 x,实参变量 y,7,10,形参变量 sx,形参变量 sy,变量 value,复制,复制, value = sx, sx = sy, sy = value,10,7,7,swap函数的执行过程和各个变量的变化过程,调用swap函数,调用swap函数,调用swap函数,执行swap函数,执行swap函数,执行swap函数,形参传递参数,16,void main int x = 7, y=10; swap( /?,void swap ( int *sx, int *sy ) int value; value = *sx; /语句 *sx = *sy; /语句 *sy = value; /语句 ,7,10,实参变量 x,实参变量 y,&x,&y,形参变量 sx,形参变量 sy,变量 value, value = *sx, *sx = *sy, *sy = value,10,7,7,swap函数的执行过程和各个变量的变化过程,调用swap函数,调用swap函数,调用swap函数,执行swap函数,执行swap函数,执行swap函数,指针传递参数,17,swap函数的执行过程和各个变量的变化过程,7,10,变量 x,变量 y,&sx,&sy,变量 value,调用swap函数,调用swap函数,调用swap函数,执行swap函数,执行swap函数,执行swap函数, value = sx, sx = sy, sy = value,10,7,7,引用传递参数,void main int x = 7, y=10; swap(x, y); coutxy; /?,void swap ( int /语句 ,18,4、重载,重载(overloading)是同一符号在同一作用域的不同场合具有不同的语义。这个符号可以是函数名、运算符,重载使程序更简洁。函数重载运算符重载,19,1)问题举例复数的运算,class complex/复数类声明 public: complex(double r=0.0, double i=0.0) /构造函数 real=r; imag=i; void display();/显示复数的值 private: double real; double imag;,运算符重载,20,1)问题举例复数的运算,如何实现复数的加、减运算?实现复数加减运算的方法定义成员函数:add,sub;重载“+”、“-”运算符。,运算符重载,21,2)成员函数复数的运算,class complex/复数类声明 public: complex(double r=0.0, double i=0.0) /构造函数 real=r; imag=i; void display();/显示复数的值 complex complex_add(Complex ,运算符重载,22,2)成员函数复数的运算,complex complex:complex_add(complex ,运算符重载,23,3)运算符重载复数的运算,class complex/复数类声明 public: complex(double r=0.0, double i=0.0) /构造函数 real=r; imag=i; void display( );/显示复数的值 complex operator + (Complex ,运算符重载,24,3)运算符重载复数的运算,complex complex:operator + (complex ,运算符重载,25,运算符重载的实质,运算符重载是对已有的运算符赋予多重含义C+中预定义的运算符其运算对象只能是基本
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026秋季国家管网集团华中公司高校毕业生招聘笔试备考题库(浓缩500题)含答案详解(b卷)
- 2026秋季国家管网集团云南公司高校毕业生招聘考试参考试题(浓缩500题)及参考答案详解(考试直接用)
- 2026秋季国家管网集团东部原油储运公司高校毕业生招聘考试备考试题(浓缩500题)有完整答案详解
- 2026秋季国家管网集团广西公司高校毕业生招聘笔试参考题库(浓缩500题)含答案详解(a卷)
- 2026国网湖北省电力公司高校毕业生提前批招聘笔试参考题库浓缩500题及1套完整答案详解
- 2026秋季国家管网集团广西公司高校毕业生招聘笔试备考试题(浓缩500题)附答案详解(基础题)
- 2025国网福建省高校毕业生提前批招聘(约450人)笔试模拟试题浓缩500题含答案详解(新)
- 2026秋季国家管网集团山东分公司高校毕业生招聘考试备考试题(浓缩500题)及参考答案详解
- 2026年双鸭山市农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)参考答案详解
- 2026国家管网集团甘肃公司秋季高校毕业生招聘25人笔试参考题库(浓缩500题)附答案详解ab卷
- 玉米密植精准调控高产技术-李少昆农科院作物所
- 高新技术企业申报范本
- 高中高一英语第一次月考试卷分析
- 开荒期间应知及注意事项课件
- NY 5099-2002无公害食品食用菌栽培基质安全技术要求
- GB/T 6462-2005金属和氧化物覆盖层厚度测量显微镜法
- Unit 3 Lesson 3 Memories of Christmas 课件-高一英语北师大版(2019)必修第一册
- GB/T 11352-2009一般工程用铸造碳钢件
- 学生手册正文
- 小学五年级信息技术下册教案-全册
- 高效协同课件
评论
0/150
提交评论