C++函数重载

函数重载(Overload)

函数重载在C++中指的是函数名相同,参数个数不同,参数的类型不同,参数的顺序不同的多个函数构成重载。

Example

int add(int a, int b) {
    return a + b;
}

double add(double a,double b) {
    return a + b;
}

int add(int a) {
    return a + 10;
}

int main(){
    double re = add(10.0,11.0);
    cout << re << endl;
    return 0;
}

注意

1.需要注意的是返回值的类型与函数重载无关。
2. 调用函数时,实参的隐式类型转换可能会产生二义性

void func(int a = 0,int b=0) {

}

void func(int a) {
    
}

int main(){
    func(1); //这里无法分辨调用哪个函数
    return 0;
}

原理

本质上只是编译器的特性,C++编译器默认会对符号名(比如函数名)进行改编、修饰、对重载的函数生成不同的函数名,但是不同的编译器(MSVC,g++)会有不同的规则。这种技术通常叫做name mangling 或者name decoration技术

posted @ 2021-08-05 14:12  弄啥来  阅读(162)  评论(0)    收藏  举报