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'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' –