超载运营商

时间:2014-02-20 23:33:11

标签: c++

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

1 个答案:

答案 0 :(得分:2)

“运算符重载”是为其中一个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),最糟糕的是它在名称查找期间只是一个更好的匹配。但是,“运营商重载”无论如何都已经卡住了。

相反,如果您试图彻底重新定义现有的运算符重载,那么您的编译器和/或链接器将阻止构建成功,因此“重新定义运算符”不是任何有效的术语。