有人可以确认我对我们可以重载的内容的理解是否正确?
常量/非const
可变/非可变
参数类型(显然)
参数数量(显然)
不返回类型
编辑:函数(非参数类型)是易失性还是非易失性
我也有点困惑int,int *,& int和&& int可以用于重载具有相同名称的函数吗?的请问
void X(int);
void X(int*);
void X(int&);
void X(int&&);
是同一功能的四种不同重载版本吗?
答案 0 :(得分:7)
参数类型和参数数量 - 这些是区分重载函数的唯一方法。这涵盖了与参数相关的所有内容,包括int/int &/int &&
区别,因为它们是形式上不同的参数类型。
您的const/non-const
区别(并且不要忘记volatile
)可以被视为参数类型的一部分,即使它应用于类方法,因为在这种情况下它确实限定了隐式{ {1}}参数。无论您是想将此视为基于参数的重载还是作为单独的重载类型,都取决于您。
我不确定你的意思是可变的/不可变的。
还必须说语言规范有一组定义等效参数声明概念的规则,这意味着不同的(按类型)参数声明可能仍然被认为是等效的超载的目的。