Skip to content

cpp overload

ShenYj edited this page Jul 20, 2023 · 1 revision

函数重载

C语言 是不支持函数重载的

因为 C语言 这个特性,C 语言 函数对应的符号有固定格式, 所以在 Swift 中能够通过 @_silgen_name 的方式来实现 C 函数 的直接调用

作为 C 语言的 超集, C++ 支持函数重载

本质:

采用了 name mangling 或者叫 name decoration 技术, C++ 编译器默认会对符号名 (比如函数名) 进行改编、 修饰, 保证其符号唯一并且不会重复产生冲突,并且不同的编译器有不同的规则 而 C 语言 并没有采用这种技术

函数重载:两个函数的函数名完全一样, 但是参数个数、类型、顺序不同, 都构成重载

注意: 返回值类型与函数重载无关、实参的隐式类型转换可能会产生二义性

#include <iostream>
using namespace std;

int sum(int v1, int v2) {
    return v1 + v2
}

int sum(int v1, int v2, int v3) {
    return v1 + v2 + v3
}


int main() {
    cout << sum(10, 20) << endl;
    cout << sum(10, 20, 30) << endl;

    getchar();
    return 0;
}
#include <iostream>
using namespace std;

void func(int v1, double v2) {
    cout << "func(int v1, double v2)" << endl;
}

void func(double v1, int v2) {
    cout << "func(double v1, int v2)" << endl;
}

Getting Started

Social

Clone this wiki locally