Передача классов Qt по константной ссылке

Известно, что классы Qt используют скопировать на Wite при передаче по значению. Таким образом, копирование не выполняется до тех пор, пока оно не потребуется Я много раз видел, как классы Qt передавались по константной ссылке, когда требовался только доступ только для чтения к объекту. Почему люди проходят const QString& вместо простого QString если в обоих случаях не делается копия?

2

Решение

Это потому, что магия имеет цену. QString не копирует всю строку, но вычисляет ссылки. Многие копии QString могут замедлить работу программы. Если const QString& достаточно для ваших нужд, почему бы не использовать его? Это все еще быстрее.

7

Другие решения

Копирование при записи не означает, что объект не будет скопирован. Это только означает, что глубокая копия будет сделано при записи, то есть актуально данные будет скопирован на запись. Основная сложность создания копии заключается в том, что данные копирование. Но простое копирование требует некоторых операций, таких как подсчет ссылок.

В результате, Передача по ссылке все же дешевле, чем изготовление мелкой копии..

4