, , B::operator* . , A::operator* :
inline A A::operator*(A* this, A b)
{
A out;
out.x = this->x * b.x;
out.y = this->y * b.y;
return out;
}
, A , B . .
, , A B, const :
struct A
{
float x, y;
inline A operator*(const A& b) const
{
A out;
out.x = x * b.x;
out.y = y * b.y;
return out;
}
}
struct B
{
float x, y;
}
inline B operator*(const B& a, const B& b)
{
B out;
out.x = a.x * b.x;
out.y = a.y * b.y;
return out;
}
- , , ( ).
, const , B, , A, - ?
-, , . (, this .)
, . , , , , , . , ( , ) , . ( - ):
// Setup for the function. Usually already done by the inlining.
r1 <- this
r2 <- &result
r3 <- &b
// Actual function.
r4 <- r1[0]
r4 <- r4 * r3[0]
r2[0] <- r4
r4 <- r1[4]
r4 <- r4 * r3[4]
r2[4] <- r4
RISC- (, ARM). x86, , , . , , , . , . ( , / LLVM- , result , .)
, this, . , ? ; ( , ). , - , , .
-S gcc, , , .