day_7/14(方法的重载)

目录

前言        

什么是方法的重载?

构成方法的重载有哪些条件?

        1、形参类型不同

        2、形参个数不同

        3、参数顺序不同

        4、错误例子

方法的重载有什么用?


前言        

前面学习了方法的定义及使用,并且也做了几天练习了,今天来讲一下方法的重载,三个问题,什么是方法的重载?构成方法的重载有哪些条件?方法的重载有什么用?

什么是方法的重载?

        方法的重载是指一个类中可以定义多个方法名相同,但参数不同的方法。 调用时,会 根据不同的参数自动匹配对应的方法。

构成方法的重载有哪些条件?

        1、形参类型不同

                如 public int add(int a,int b){return a+b;}   和  public double add(double a,double b){return a+b;}  ,这里两个方法,名称相同,但是形参的数据类型不一样,所以构成重载。

        2、形参个数不同

                如 public double area(double l,double w){ return l*w; } 和 public double area(double r){return 3.1415926*r*r; },这里两个方法分别是求长方形的面积和圆形的面积,名称一样,但是形参个数不一样,所以也构成重载。

        3、参数顺序不同

                如public double add(int a,double b){ return a+b;}和public double add(double a,int b)         {return a+b;},这里的两个函数的两个参数都是一个int类型,一个double类型,但是一个是int在前,一个是double在前,所以这两个函数也是构成重载的。

        4、错误例子

                public double add(int a,int b){return a+b;}                                                                                          public int add(int a,int b){return a+b;}

                这里就会报错,这里就会有人问了,我这不是重载吗?怎么会报错呢?很简单,这里虽然返回值不同,但是它们两个的形参类型相同,形参的个数也一样,所以不构成重载。

                public int add(int a,int b){return a+b;}                                                                                                  public int add(int m,int n){return m+n;}

                这里也会报错,那么这里报错又是什么原因呢?这里虽然形参名字不同,但是形参类型还是一样的,形参的个数也都是两个,所以不构成重载。

方法的重载有什么用?

        重载的最直接作用是方便了程序员可以根据不同的参数个数,顺序,类型,自动匹配方法,减少写过个函数名或方法名的重复步骤。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
完善下面的代码class Date { int Year, Month, Day; public: Date(int y = 2000, int m = 1, int d = 1)//A,带参数,且所有参数都有默认值 friend ostream& operator<<(ostream & out, Date & d) //插入运算符重载 void SetData(int y, int m, int d) //设置数据信息 }; class Person { char* Name; // 姓名,注意:用指针实现 Date Birth; //出生日期 public: Person(const char* namep = 0, int y = 0, int m = 0, int d = 0) // 构造函数,注意成员对象初始化 virtual~Person() // 因为在构造函数中动态申请了空间,则在析构函数中,需释放空间 void show(ostream& out) //显式信息,注意形参是输出流对象 void SetData(const char* namep , int y , int m , int d) //设置数据信息 }; class Student:public Person { float math; //数学成绩 float eng; //英语成绩 public: Student(const char* namep=0, int y = 0, int m = 0, int d = 0,float math = 0, float eng = 0) // 构造函数,注意基类成员初始化 friend ostream& operator<<(ostream& out, Student & s) //插入运算符重载 void SetData(const char* namep, int y, int m, int d, float math, float eng) //设置数据信息 }; int main() { Student * ps = new Student[N]; ps[0].SetData("张三", 2002, 1, 2, 89, 79); ps[1].SetData("李四", 2002, 12, 21, 67, 78); ps[2].SetData("王五", 2003, 10, 12, 87, 95); ofstream of("out.txt"); for (int i = 0; i < N; i++) { of << ps[i] << endl; //输出到文件 cout << ps[i] << endl; //输出到屏幕 } return 0; } 参考输出 Name:张三 Birth:2002.1.2 Math:89 English:79 Name:李四 Birth:2002.12.21 Math:67 English:78 Name:王五 Birth:2003.10.12 Math:87 English:95
最新发布
06-07

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值