重载功能

时间:2015-11-04 06:21:25

标签: c++ overloading

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

File1.cpp

int foo(){//do something}

File2.cpp

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

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

2 个答案:

答案 0 :(得分:2)

是的,它们是两种不同的功能。

函数签名主要基于以下参数:参数的数量,类型和顺序。类成员函数也有修饰符,如const或不是$('#proposalmessage').submit(function() { $(this).unbind('submit').submit(); }); 。返回类型是签名的一部分,用于区分重载函数。

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

答案 1 :(得分:0)

是的,它们将合适地name-mangled放在两个单独的函数中,scope是全局的,在全局命名空间(a.k.a:::命名空间)。

要使两个函数重载且不违反ODR,其参数类型和“属性”(例如constvolatilenoexcept之后参数列表)应该是不同的。具有相同参数类型和“属性”的两个函数但具有不同的返回类型会违反ODR。

不要担心这一点,让链接器成为它诞生的编译器的奴隶。