C++调用+运算符的这种用法是什么?目的是什么?

jhb*_*hbh 5 c++ operator-overloading operators

我最近在运算符重载审查中看到了一个例子,他们讨论了+运算符本质上是一个带有2个参数的函数.

稍微戳了一下,我决定更深入地看一下,发现调用+就像一个函数确实有效,而不是你期望的那样......例如:

int first = 6;
int second = 9;
int result = +(second,first);//result=6
Run Code Online (Sandbox Code Playgroud)

这个组件是

int result = +(second,first);
mov         eax,dword ptr [first]  
mov         dword ptr [result],eax 
Run Code Online (Sandbox Code Playgroud)

对+的调用只是将最后一个参数移动到eax中.

谁能告诉我这个和/或它叫什么的目的?

Gre*_*ill 11

表达式有两个部分+(second,first)- 它们都不是函数调用.

该表达式(second, first)使用罕见的逗号运算符,它依次计算每个表达式,表达式的结果是最后计算的表达式.

+这种情况下仅仅是一元+操作,就像在说+5-8.所以表达式的结果是6,.的值first.

但是,您可以operator +这样称呼:

int result = operator +(second, first);
Run Code Online (Sandbox Code Playgroud)