Хорошо, у меня была эта проблема, и я не мог найти хороший ответ, поэтому я собираюсь поделиться тем, что я узнал.
Вы можете передать по значению, в этом нет ничего плохого. (как вы показали в своем вопросе.)
Но причина, по которой мы передаем параметр по константной ссылке, заключается в том, что функция не делает фактическую копию вызываемого значения. На нее ссылаются, поэтому она просто указывает на это значение, где бы оно ни находилось в памяти.
Это экономит время обработки, особенно если это что-то большое с тысячами имен ...
В этом случае сэкономленное время будет почти ничем.
И для const, который гарантирует пользователю функции, что ссылочное значение не будет изменено, потому что оно может быть изменено, поскольку у вас есть доступ к исходному расположению в памяти, потому что оно передано по ссылке.
Если определение вашей функции на самом деле изменяет значение параметра, вызываемого по константной ссылке, это будет ошибкой компилятора, это не позволит вам сделать это. потому что когда вы помещаете const, вы говорите компилятору, что это значение не может быть изменено.