我是C ++的新手并试图理解重载的概念。
答案 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),最糟糕的是它在名称查找期间只是一个更好的匹配。但是,“运营商重载”无论如何都已经卡住了。
相反,如果您试图彻底重新定义现有的运算符重载,那么您的编译器和/或链接器将阻止构建成功,因此“重新定义运算符”不是任何有效的术语。