2013-08-12 5 views
-2
class A 
{ 
    int x,y; 
    public: 
     A(int a=0,int b=0) 
     {x=a;y=b;} 
    /* ... */ 
} 

A& fctr() 
{ 
    A loc(1,2); 
    return loc; 
} 

Давайте рассмотрим эту инструкцию:Почему возвращение по ссылке быстрее, чем возврат по значению?

A x=fctr(); 

fctr() возвращает ссылку на объект, который уничтожается ... < < это не проблема -_-

В приведенной выше инструкции, и на основании ссылки, возвращаемой fctr программой копия уничтоженный объект loc в x.

В другой руке, возвращаясь по значению копия объект loc в x !!

Единственное различие я вижу в том, что при возврате по ссылке объекта LOC разрушается, но при возврате по значению объекта LOC не уничтожил , пока команда не будет завершена.

Так что возвращение по значению кажется безопасным, и оно делает то же самое, что и возвращение по ссылке !!

То, что я читал в книгах и то, что я слышал от людей, что возвращение по ссылке быстрее, чем возвращение по значению ...

Так почему возвращения по ссылке быстро, чем возвращение по значению?

... Я думаю, что я не прав в чем-то, но я не знаю, что это? !!!

+4

«это не проблема -_-» В этом проблема. – GManNickG

+0

Это не быстрее. Это неопределенное поведение. – juanchopanza

+0

Я знаю, что это проблема -_-, но теперь я говорю о том, какой из двух способов происходит быстрее и почему ... – BBeta

ответ

0

Возвращаясь по ссылке - системе не нужно выделять & инициализировать любую дополнительную память. Просто нужно передать адрес памяти уже существующего местоположения.

Возврат по значению - Системная потребность выделить & Инициализировать дополнительную память.

Это полностью зависит от требований, нужно ли вам «по ссылке» или «по значению».

Смежные вопросы