• c++函数重载


           为方便使用,在一定范围内,c++可以定义多个功能形似的同名函数,但是这些函数的形参必须不同(类型、个数、顺序),这就是重载函数。重载函数常用来实现功能类似而所处理的数据类型不同的问题。

    看下面的一个例子,来体会一下:实现一个打印函数,既可以打印int型、也可以打印字符串型。在C++中,我们可以这样做:

    #include<iostream>
    using namespace std;
    
    void print(int i)
    {
            cout<<"print a integer :"<<i<<endl;
    }
    
    void print(string str)
    {
            cout<<"print a string :"<<str<<endl;
    }
    
    int main()
    {
            print(12);
            print("hello world!");
            return 0;
    
          两个重载函数必须在下列一个或两个方面有所区别:
      1、函数有不同参数。
      2、函数有不同参数类型,
          编译器如何判断调用的是哪个函数?
          假如有如下函数:
    void S();
    void S(int);
    void S(doubledouble=1.2);
    void S(constchar*,constchar*);
    void Max(intint);
    //……
    intmain()
    {
    S(2.4);
    return;
    }
    //S(2.4);的调用与S();S(int);S(double,double=1.2);S(constchar*,constchar*),的声明在同一域,即是可见的。

      当调用s(2.4)时,编译器的判断分为两步:

      一、确定候选函数——同名函数;         //该例中第一步将Max(int,int)排除

      二、1、确定可行函数——参数个数相同[如S ( int )],或者可行函数的参数可以多一些,但是多出来的函数参数都要有相关的缺省值(如 S (double ,                        double =1.2 );)

                2、第二个动作是根据参数类型的转换规则将被调用的函数实参转换(conversion)成候选函数的实参;

     
     

            

  • 相关阅读:
    android的UriMatcher类
    学习Scanner类
    android应用开发 listview
    EditText 和 TextView 的属性详解
    Android适配器Adapter学习
    AlertDialog.Builder对话框类的用法
    Android ArrayAdapter 详解
    ThreadPoolExecutor线程池大小设置与BlockingQueue的三种实现区别
    【Android】滑动屏幕效果GestureDetector、OnGestureListener、ViewFlipper
    Windows Phone 7常用的开发技巧&学习总结
  • 原文地址:https://www.cnblogs.com/voyagflyer/p/5338712.html
Copyright © 2020-2023  润新知