Vat*_*san 7 c++ function operator-keyword
int a, b, c;
//do stuff. For e.g., cin >> b >> c;
c = a + b; //works
c = operator+(a,b); //fails to compile, 'operator+' not defined.
Run Code Online (Sandbox Code Playgroud)
这另一方面起作用 -
class Foo
{
int x;
public:
Foo(int x):x(x) {}
Foo friend operator+(const Foo& f, const Foo& g)
{
return Foo(f.x + g.x);
}
};
Foo l(5), m(10);
Foo n = operator+(l,m); //compiles ok!
Run Code Online (Sandbox Code Playgroud)
首先,将内置运算符作为函数调用将不起作用,因为语言规范从未说过存在这样的函数.内置运营商只是运营商.它们背后没有实现功能,因为语言规范从未暗示它们的存在.基于函数的实现仅适用于重载运算符.
其次,在重载解析期间,内置运算符确实由它们虚构的函数类似对应物表示,但禁止"内置运算符"的"显式"函数式调用的措辞存在于13.6/1中
表示第5节中定义的内置运算符的候选运算符函数在本子条款中指定.这些候选函数参与13.3.1.2中描述的运算符重载解析过程,并且不用于其他目的.