В чем разница между void DoSomething (const Foo & foo) и void DoSomething (Foo foo)
DoSomething (Foo foo) передает объект foo по значению, если Foo является примитивомтип данных, но по ссылке, если Foo является определяемым пользователем типом данных.Но во втором случае, если вы измените foo, он отразится обратно на исходный объект, что часто нежелательно.Об этом позаботится DoSomething (const Foo & foo), который передает foo по ссылке (таким образом сохраняя дополнительную стоимость памяти при передаче по значению) и по-прежнему не предоставляет права на запись foo для функции DoSomething.Таким образом, это лучшая практика.
Может ли кто-нибудь дать мне образец неявного параметра и по ссылке?
Примером неявного параметра в функциях-членах является ссылкана родительский объект, т.е.this
, который никогда не упоминается в определении функции, но всегда доступен для использования.
Является ли массив единственным, который передается по ссылке в C ++?
Нет,все определенные пользователем объекты передаются по ссылке.