C++重载

1、 函数重载的关键是函数的参数列表—-也称函数特征标。
2、如果两个函数的参数数目和类型相同,同时参数的排列顺序也相同,则他们的特征标相同。
3、C++允许定义名称相同的函数,条件是它们的特征标不同。
4、虽然函数重载很诱人,但也不要滥用。仅当函数基本上执行相同的任务,但使用不同形式的数据时,才应该使用函数重载;否则可以考虑使用默认参数,这样程序只要为一个函数请求内存。
5、注意事项:
a、编译器在检查函数特征标时,将把类型引用和类型本身视为同一个特征标。

double cube (double x);
double cube (double & x);  //并非重载

b、如果函数名、形参类型和个数相同,即使函数返回值类型不同,编译器也会认为是函数重复定义的语法错误。

int add(int x,int y);
void add(int x,int y);  //编译器报错

c、匹配函数时,并不区分const和非const变量。

void funstr(char * str)
{ cout << str << endl; }

void funstr(const char * str)
{ cout << str << endl;}

void funstr2(const char * str)
{ cout << "funstr2 " << str << endl; }

void funstr3(char * str)
{ cout << "funstr3 " << str << endl; }

char *str1 = {"hellow world !"};
const char *str2 = {"hellow const !"};

int main()
{
    funstr(str1);   # hellow world !
    funstr(str2);   # hellow const !
    funstr2(str1);  # funstr2 hellow world ! 非cost被压制成了const
    funstr2(str2);  # funstr2 hellow const !
    funstr3(str1);  # funstr3 hellow world !  
    //funstr3(str2); #编译器报错              const无法压制成非const
    return 0;
}

d、正确重载

int add(int m,int n)
{
    return m+n;
}
float add(float m,float n)
{
    return m+n;
}
int main()
{
    int i=1,j=2;
    float f1=1.2,f2=2.3;
    cout<< add(i,j)<<endl;          # 3
    cout<< add(f1,f2)<<endl;     # 3.5
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值