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)