zoukankan      html  css  js  c++  java
  • 函数重载

     1 C++允许功能相近的函数在相同的作用域内以相同函数名声明,从而形成重载。方便使用,便于记忆。
     2 例:
     3 形参类型不同
     4 int add(int x, int y);
     5 float add(float x, float y);
     6 形参个数不同
     7 int add(int x, int y);
     8 int add(int x, int y, int z);
     9 重载函数的形参必须不同: 个数不同或类型不同。
    10 编译程序将根据实参和形参的类型及个数的最佳匹配来选择调用哪一个函数。
    11 
    12 
    13 int add(int x,int y);
    14 int add(int a,int b);
    15 编译器不以形参名来区分
    16 
    17 
    18 int add(int x,int y);
    19 void add(int x,int y);
    20 编译器不以返回值来区分
    21 
    22 不要将不同功能的函数声明为重载函数,以免出现调用结果的误解、混淆。这样不好:
    23 int add(int x,int y)
    24 {  return x+y;  
    25 }
    26 float add(float x,float y)
    27 {  return x-y;  
    28 }
    29 
    30 
    31 编写三个名为add的重载函数,分别实现两整数相加、两实数相加和两个复数相加的功能。
    32 #include<iostream>
    33 using namespace std;
    34 struct complex
    35 {
    36     double real;
    37     double imaginary;
    38 };
    39 void main(void)
    40 {
    41     int m, n;
    42     double x, y;
    43     complex c1, c2, c3;
    44     int add(int m, int n);
    45     double add(double x, double y);
    46     complex add(complex c1, complex c2);
    47 
    48     cout<<"Enter two integer: ";
    49     cin>>m>>n;
    50     cout<<"integer "<<m<<'+'<<n<<"="<<add(m,n)<<endl;
    51         cout<<"Enter two real number: ";
    52     cin>>x>>y;
    53     cout<<"real number "<<x<<'+'<<y<<"= "<<add(x,y)
    54             <<endl;
    55 
    56     cout<<"Enter the first complex number: ";
    57     cin>>c1.real>>c1.imaginary;
    58     cout<<"Enter the second complex number: ";
    59     cin>>c2.real>>c2.imaginary;
    60     c3=add(c1,c2);
    61     cout<<"complex number (" <<c1.real<< ','
    62            << c1.imaginary <<")+("<<c2.real<<','
    63            <<c2.imaginary<<")=("<<c3.real<<','
    64            <<c3.imaginary<<")\n";
    65 }
    66 int add(int m, int n)
    67 {  return m+n; }
    68 
    69 double add(double x, double y)
    70 {  return x+y; }
    71 
    72 complex add(complex c1, complex c2)
    73 {
    74     complex c;
    75     c.real=c1.real+c2.real;
    76     c.imaginary=c1.imaginary+c2.imaginary;
    77     return c;
    78 }
  • 相关阅读:
    AtCoder 杂题乱写
    JOISC2020 遗迹
    【考试总结】20220107
    AGC021F Trinity
    CCPC2021 广州A/CF Gym103415A
    【考试总结】20220115
    JDK8 时间api当天的开始和截至时间
    技术方案模板
    正则表达式
    组合算法
  • 原文地址:https://www.cnblogs.com/hxsyl/p/2663985.html
Copyright © 2011-2022 走看看