Я прочитал в C ++: The Complete Reference
, книга следующая
Хотя объекты передаются функциям с помощью нормальный механизм передачи параметров по значению, который теоретически защищает и изолирует вызывающий аргумент, все же возможно возникновение побочного эффекта , который может воздействовать на объект, используемый в качестве аргумента , или даже повредить его. Например, если объект, используемый в качестве аргумента, выделяет память и освобождает эту память при уничтожении, то его локальная копия внутри функции освобождает ту же память, когда ее деструктор равен {{1 }} называется. Это оставит исходный объект поврежденным и фактически бесполезным.
Я не очень понимаю, как возникает побочный эффект. Может ли кто-нибудь помочь мне понять это на примере?