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)成候选函数的实参;

 
 

        

posted @ 2016-03-30 20:22  youngshuo  阅读(221)  评论(0编辑  收藏  举报