1
假设我们有型A
,我们希望做如下操作:运算符重载
A operator -(const A& a, const A& b)
{
A c;
//...
return c;
}
当我们调用这个操作符,我们做这样的事情:
A c;
c = a - b;
基本上我们在分配c
两次(在调用操作员之前和操作员内部之前),然后将其值复制到操作员之外的主代码上的变量。在C中,我们就可以通过指针功能,将它们存储正是我们希望他们没有任何中间分配/副本:
void sub(A* a, A* b, A* c);
是否有可能做同样的运算符重载或做我有把它作为C函数来实现,以避免中间分配/复制?
谢谢
http://stackoverflow.com/questions/12953127/what-are-copy-elision-and-return-value-optimization –
@SanderDeDycker对不起,我无法理解。你能更清楚地表达自己吗? – fc67
如果你写'A c = a - b;''''''''''c'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' –