Да, параметры, переданные по значению, копируются. Однако вы также можете передавать переменные по ссылке. Ссылка является псевдонимом, поэтому это делает параметр псевдоним переменной, а не копией. Например:
void foo(int x) {}
void bar(int& x) {}
int i;
foo(i); // copies i, foo works with a copy
bar(i); // aliases i, bar works directly on i
Если пометить его как константы, то есть только для чтения псевдоним:
void baz(const int&);
baz(i); // aliases i, baz reads-only i
В общем, всегда проходят по константной ссылке. Когда вам нужно изменить псевдоним, удалите константу. И наконец, когда вам нужна копия, просто перейдите по значению. *
* И как хорошее эмпирическое правило, основные типы (int, char * и т. Д.) И типы с sizeof(T) < sizeof(void*)
должны передаваться по значению вместо const-reference, потому что их размер достаточно мал, что копирование будет быстрее, чем наложение.
Что вы используете в тексте на C++, который не описывает это подробно? – 2010-06-03 20:43:19
Какой учебник? – Faken
В этом проблема. :) Вы должны учиться из хорошего учебника, у нас есть большой список здесь: http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list – GManNickG