如果在具有不同签名的多个文件中定义了具有相同名称的函数,则会重载这些函数,例如。
File1.cpp
int foo(){//do something}
File2.cpp
int foo(int a){//do something}
如果我在同一个项目中编译这两个文件,这些函数是否会被视为重载函数。
答案 0 :(得分:2)
是的,它们是两种不同的功能。
函数签名主要基于以下参数:参数的数量,类型和顺序。类成员函数也有修饰符,如const
或不是$('#proposalmessage').submit(function() {
$(this).unbind('submit').submit();
});
。返回类型是不签名的一部分,用于区分重载函数。
如果同名的两个函数具有唯一的签名,则它们是不同的。
答案 1 :(得分:0)
是的,它们将合适地name-mangled放在两个单独的函数中,scope是全局的,在全局命名空间(a.k.a:::
命名空间)。
要使两个函数重载且不违反ODR,其参数类型和“属性”(例如const
,volatile
或noexcept
之后参数列表)应该是不同的。具有相同参数类型和“属性”的两个函数但具有不同的返回类型会违反ODR。
不要担心这一点,让链接器成为它诞生的编译器的奴隶。