重载运算符

overloading an operator

本文关键字:运算符 重载      更新时间:2023-10-16

我是C++新手,并试图理解重载的概念。

"

运算符重载"是为其中一个C++运算符提供自定义实现的常用术语。

之所以称为"重载

",是因为在某些情况下,从概念上讲,您将使用将自定义类型的对象作为参数的新重载重载函数operator@(其中@是某个运算符符号)。

/**
 * Doesn't actually exist in this form, but conceptually
 * this exists built in to the language.
 */
int operator+(int, int);
/**
 * Your overload of the `operator+` function, which takes
 * `MyClass`s.
 */
MyClass operator+(const MyClass&, const MyClass&);

当你开始将运算符定义为你的类型成员时,这个术语变得不准确,因为MyClass::operator+不会重载::operator+;充其量它会隐藏它(例如ADL),最坏的情况是它只是名称查找期间更好的匹配。但是,"运算符重载"无论如何都卡住了。

相反,如果您尝试彻底重新定义现有的运算符重载,那么您的编译器和/或链接器将阻止构建成功,因此"重新定义运算符"对于任何有效的方法来说都不是一个公认的术语。