C++ 重载
-
重载
C++允许您为同一作用域内的函数名称或运算符指定多个定义,分别称为函数重载和运算符重载。重载声明是在相同作用域内以与先前声明的声明相同的名称声明的声明,除了两个声明具有不同的自变量且具有不同的定义(实现)。调用重载的函数或运算符时,编译器通过将用于调用函数或运算符的参数类型与定义中指定的参数类型进行比较,来确定最合适的定义。选择最合适的重载函数或运算符的过程称为重载解析。 -
C++中的函数重载
在同一个作用域中,可以为同一个函数名具有多个定义。函数的定义必须在参数列表中的参数类型和/或数量上彼此不同。您不能重载仅在返回类型上有所不同的函数声明。以下是使用相同函数print()打印不同数据类型的示例-编译并执行上述代码后,将产生以下结果-编译并执行上述代码后,将产生以下结果- -
C++中的运算符重载
您可以重新定义或重载C++中可用的大多数内置运算符。因此,程序员也可以将运算符与用户定义的类型一起使用。重载的运算符是具有特殊名称的函数:关键字“ operator”,后跟所定义的运算符的符号。像任何其他函数一样,重载运算符具有返回类型和参数列表。声明可用于添加两个Box对象的加法运算符,并返回最终的Box对象。大多数重载运算符可以定义为普通的非成员函数或类成员函数。如果我们将上述函数定义为类的非成员函数,则必须为每个操作数传递两个参数,如下所示:以下示例显示了使用成员函数进行重载的运算符的概念。此处,对象作为参数传递,其属性将使用此对象访问,调用此操作符的对象可以使用此操作符进行访问,如下所述:编译并执行上述代码后,将产生以下结果- -
可重载/不可重载运算符
以下是可以重载的运算符列表-+ - * / % ^ & | ~ ! , = < > <= >= ++ -- << >> == != && || += -= /= %= ^= &= |= *= <<= >>= [] () -> ->* new new[] delete delete[] 以下是运算符的列表,不能重载-:: .* . ? :