C++ 重载函数

C++ 重载函数,c++,overloading,C++,Overloading,如果在具有不同签名的多个文件中定义了具有相同名称的函数,这些文件是否重载 File1.cpp int foo(){//do something} File2.cpp int foo(int a){//do something} 如果我在同一个项目中编译这两个文件,这些函数将被视为重载函数。是的,它们是两个不同的函数 函数签名主要基于参数:参数的数量、类型和顺序。类成员函数也有修饰符,比如const。返回类型不是用于区分重载函数的签名的一部分 如果两个同名函数具有唯一的签名,则它们是不同的。是

如果在具有不同签名的多个文件中定义了具有相同名称的函数,这些文件是否重载

File1.cpp

int foo(){//do something}
File2.cpp

int foo(int a){//do something}

如果我在同一个项目中编译这两个文件,这些函数将被视为重载函数。

是的,它们是两个不同的函数

函数签名主要基于参数:参数的数量、类型和顺序。类成员函数也有修饰符,比如
const
。返回类型不是用于区分重载函数的签名的一部分


如果两个同名函数具有唯一的签名,则它们是不同的。

是的,它们将被适当地划分为两个单独的函数,它们是全局的,位于全局名称空间(也称为名称空间)

对于要重载且不违反的两个函数,其参数类型和“属性”(如参数列表后的
const
volatile
noexcept
)应不同。具有相同参数类型和“属性”集合但返回类型不同的两个函数违反了ODR

只是不要担心这个,让链接器成为它天生的编译器的奴隶