- 1
- 0
- 约2.47万字
- 约 108页
- 2023-08-23 发布于广东
- 举报
4.5 成员函数重载及默认参数 【例4.11】构造一个求4个正整数中最大者的类Max,并用主程序验证它的功能。 class Max{ //声明类 private: //封装数据成员和成员函数 int a,b,c,d; //数据成员 int Maxi(int,int); //只允许类内部的成员函数调用 public: //对外界的接口 void Set(int,int,int,int); //设置对象初值 int Maxi(); //求最大值 }A[3]; //声明类的对象数组,定义结束 第六十一页,共一百零八页,2022年,8月28日 //类中成员函数的实现 int Max::Maxi(int x,int y) //求二个数的最大值 {return (xy)?x:y;} //使用两个默认参数 void Max::Set(int x1,int x2,int x3=0,int x4=0) {a=x1; b=x2; c=x3; d=x4; } int Max::Maxi() //求自己类中四个数的最大值 { int x=Maxi(a,b);//x和y为Maxi()函数的局部整数对象 int y=Maxi(c,d); return Maxi(x,y); } 第六十二页,共一百零八页,2022年,8月28日 //主程序 #include iostream using namespace std; void main() { A[0].Set(12,45,76,89); //为数组对象A[0]置初值 A[1].Set(12,45,76); //为数组对象A[1]置初值 A[2].Set(12,45); //为数组对象A[2]置初值 for(int i=0;i3;i++) //输出对象求值结果 coutA[i].Maxi() ; } 第六十三页,共一百零八页,2022年,8月28日 程序演示了可在声明类的同时也声明类的对象,这里是声明对象数组A,作用与在主程序里使用“Max A[3];”语句相同。为了提高可读性,一般不在声明类时声明对象,这里只是为了演示它的性质。 程序输出结果为:89 76 45 类中重载了函数Maxi,一个原型为Maxi(int,int),用来求两数中的大者。因为它只被自己的成员函数使用,所以定义为private。 另一个原型为Maxi(),它调用两次Maxi(int,int),然后再用这两次的结果作为Maxi(int,int)的参数,求出4个数中的最大值。 赋值成员函数Set使用2个默认参数,是为了书写方便。 第六十四页,共一百零八页,2022年,8月28日 4.6 this指针 在定义Point类的两个对象A和B之后,当执行语句“A.Setxy(25,55);”时,A.x和A.y就被赋值。但是,函数Setxy(int,int)作为代码,在计算机里是和具体的对象分开存储的。那么,它是怎样知道,是要对A进行操作而不是对B进行操作呢? 当执行A.Setxy(25,55 )时,成员函数Setxy(int,int )有一个隐藏参数,名为this指针。也就是说,源程序被编译器编译后,Setxy(int a, int b )实际上是如下形式: void Point::Setxy(int a, int b,(Point*)this) { this-x =a; this-y =b; } 成员函数的this指针指向对象A。成员中对x和y的引用表示是引用对象A的成员x和y。对于任何访问该成员函数的类的对象来说,C++编译器都认为是访问this指针所指向的对象中的成员。 第六十五页,共一百零八页,2022年,8月28日 C++规定,当一个成员函数被调用时,系统自动向它传递一个隐含的参数,该参数是一个指向接受该函数调用的对象的指针,从而使成员函数知道该对哪个对象进行操作。在程序中,可以使用关键字this来引用该指针。使用this指针,保证了每个对象可以拥有自己的数据成员,但处理这些数据成员的代码可以被所有的对象共享。 除非特殊需要,一般情况下都省略符号“this-”,而让系统进行默认设置。 第六十六页,
您可能关注的文档
- 工业微生物代谢控制育种.ppt
- 观察法的性质与优缺点.ppt
- 第三章 食品微生物污染和腐败变质.ppt
- 初一生物上种子的萌发.ppt
- 高考生物一轮复习 现代生物进化理论 新人教版必修.ppt
- 机械原理第一章.ppt
- 分数四则混合运算整理与练习.ppt
- 骨科疾病一般护理.ppt
- 第三讲人类自然观的历史演变.ppt
- 第八讲成形品常见的不良及解决方法.ppt
- 河北盐山中学等校2025-2026学年上学期高三一模化学试卷(含解析).docx
- 河北正定中学2025-2026学年高一上学期期末考试物理试卷(含解析).docx
- 河北张家口市怀安县2025-2026学年第一学期期末教学综合评价八年级地理试卷(含解析).docx
- 河南安阳市殷都区2025-2026学年第一学期期末教学质量检测七年级地理试卷(含解析).docx
- 河南安阳市滑县2025一2026学年第一学期期末学业质量监测八年级地理试题(含解析).docx
- 河南安阳市林州市2025-2026学年上学期期末考试高一政治试题(含解析).docx
- 河南焦作市武陟县第一中学2025-2026学年高一上学期1月月考语文试卷(含解析).docx
- 河南济源市2025-2026学年上学期期末学业质量调研七年级历史试卷(含解析).docx
- PICC导管并发症的紧急处理与护理.pptx
- 河南鹤壁市2025-2026学年高二上学期期末考试生物试题(含解析).docx
原创力文档

文档评论(0)