Информация об изменениях

Сообщение Re[4]: Передача параметров в функцию по указателю и по ссылк от 18.04.2018 17:10

Изменено 18.04.2018 17:10 Анатолий Широков

Re[4]: Передача параметров в функцию по указателю и по ссылке
Здравствуйте, galileo, Вы писали:

G>Здравствуйте, Videoman, Вы писали:


G>>>всегда (когда возможно) лучше передавать по ссылке, так же как и всегда лучше вередавать констнантную ссылку


V>>Когда функция эквивалентна сеттеру, то лучше передавать по значению, что бы избежать лишнего копирования. Пример:

V>>
V>>void B::func(A a)
V>>{
V>>    m_a = std::move(a);
V>>}
V>>


G>чем же это лучше чем это:


G>
G>void B::func(const A& a)
G>{
G>    m_a = a;
G>}
G>


В первом случае в случае передачи rvalue работа идет с одним состоянием, которое перемещается от rvalue до m_a, во втором случае при передаче rvalue работа идет с исходным состоянием и его копией. Если класса A тяжелый для копирования, получим непроизводительные расходы на копирование во втором случае.
Re[4]: Передача параметров в функцию по указателю и по ссылк
Здравствуйте, galileo, Вы писали:

G>Здравствуйте, Videoman, Вы писали:


G>>>всегда (когда возможно) лучше передавать по ссылке, так же как и всегда лучше вередавать констнантную ссылку


V>>Когда функция эквивалентна сеттеру, то лучше передавать по значению, что бы избежать лишнего копирования. Пример:

V>>
V>>void B::func(A a)
V>>{
V>>    m_a = std::move(a);
V>>}
V>>


G>чем же это лучше чем это:


G>
G>void B::func(const A& a)
G>{
G>    m_a = a;
G>}
G>


В первом случае в случае передачи rvalue работа идет с одним состоянием, которое перемещается от rvalue до m_a, во втором случае при передаче rvalue работа идет с исходным состоянием и его копией. Если класс A тяжелый для копирования, получим непроизводительные расходы на копирование во втором случае.