zoukankan      html  css  js  c++  java
  • 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)成候选函数的实参;

     
     

            

  • 相关阅读:
    double 和 int 同时存在时的运算
    快速排序
    案例:商品放大镜效果
    淘宝flexible.js源码分析
    案例:模态框拖拽
    Web APIs——BOM
    案例:获取URL参数数据
    案例:5秒之后自动跳转页面
    JS中this指针的指向
    按钮:点击发送短信按钮60秒内不能再次点击的功能
  • 原文地址:https://www.cnblogs.com/voyagflyer/p/5338712.html
Copyright © 2011-2022 走看看