不同的重载函数方式?

时间:2013-06-03 20:44:33

标签: c++

有人可以确认我对我们可以重载的内容的理解是否正确?

  • 常量/非const

  • 可变/非可变

  • 参数类型(显然)

  • 参数数量(显然)

  • 不返回类型

  • 编辑:函数(非参数类型)是易失性还是​​非易失性

我也有点困惑int,int *,& int和&& int可以用于重载具有相同名称的函数吗?的请问

void X(int);
void X(int*);
void X(int&);
void X(int&&);

是同一功能的四种不同重载版本吗?

1 个答案:

答案 0 :(得分:7)

参数类型和参数数量 - 这些是区分重载函数的唯一方法。这涵盖了与参数相关的所有内容,包括int/int &/int &&区别,因为它们是形式上不同的参数类型。

您的const/non-const区别(并且不要忘记volatile)可以被视为参数类型的一部分,即使它应用于类方法,因为在这种情况下它确实限定了隐式{ {1}}参数。无论您是想将此视为基于参数的重载还是作为单独的重载类型,都取决于您。

我不确定你的意思是可变的/不可变的。

还必须说语言规范有一组定义等效参数声明概念的规则,这意味着不同的(按类型)参数声明可能仍然被认为是等效的超载的目的。