Известно, что классы Qt используют скопировать на Wite при передаче по значению. Таким образом, копирование не выполняется до тех пор, пока оно не потребуется Я много раз видел, как классы Qt передавались по константной ссылке, когда требовался только доступ только для чтения к объекту. Почему люди проходят const QString&
вместо простого QString
если в обоих случаях не делается копия?
Это потому, что магия имеет цену. QString не копирует всю строку, но вычисляет ссылки. Многие копии QString могут замедлить работу программы. Если const QString&
достаточно для ваших нужд, почему бы не использовать его? Это все еще быстрее.
Копирование при записи не означает, что объект не будет скопирован. Это только означает, что глубокая копия будет сделано при записи, то есть актуально данные будет скопирован на запись. Основная сложность создания копии заключается в том, что данные копирование. Но простое копирование требует некоторых операций, таких как подсчет ссылок.
В результате, Передача по ссылке все же дешевле, чем изготовление мелкой копии..