Каков наилучший способ отправки QStrings в вызове функции?
Я хотел бы знать, что является наиболее эффективным и практичным способом отправки Qstring в качестве параметра функции в QT более конкретно. Я хочу использовать ссылку. Проблема в том, что я также хочу создать экземпляр этой строки в самой функции, например, так:
это прототип функции:
void myFunction(QString & theMsg);
это вызов функции:
myFunction(tr("Hello StringWorld"));
теперь function tr()
возвращает QString, но он не работает с ссылкой (я понимаю, почему).
Я должен сделать это:
QString theQstr("Hello StringWorld");
myFunction(theQstr);
Есть ли более простой способ сделать это, продолжая использовать ссылки, или я могу просто изменить параметр функции для использования QString и все равно будет эффективным?
Ответы
Ответ 1
QString использует COW (Copy On Write) за кулисами, поэтому фактическая строка не копируется, даже если вы используете такую подпись:
void myFunction (QString theMsg)
(пока вы не измените его).
Если вам абсолютно нужна ссылка, я бы использовал const & если вы не планируете изменять входной аргумент.
void myFunction (QString const & theMsg)
Ответ 2
Наиболее эффективным и практичным способом является использование ссылки const. QOWString COW будет медленнее, чем передача по ссылке, но быстрее, чем обычная копия.