Подтвердить что ты не робот

Каков наилучший способ отправки QStrings в вызове функции?

Я хотел бы знать, что является наиболее эффективным и практичным способом отправки Qstring в качестве параметра функции в QT более конкретно. Я хочу использовать ссылку. Проблема в том, что я также хочу создать экземпляр этой строки в самой функции, например, так:

это прототип функции:

void myFunction(QString & theMsg);

это вызов функции:

myFunction(tr("Hello StringWorld"));

теперь function tr() возвращает QString, но он не работает с ссылкой (я понимаю, почему).

Я должен сделать это:

QString theQstr("Hello StringWorld"); 
myFunction(theQstr);

Есть ли более простой способ сделать это, продолжая использовать ссылки, или я могу просто изменить параметр функции для использования QString и все равно будет эффективным?

4b9b3361

Ответ 1

QString использует COW (Copy On Write) за кулисами, поэтому фактическая строка не копируется, даже если вы используете такую ​​подпись:

void myFunction (QString theMsg)

(пока вы не измените его).

Если вам абсолютно нужна ссылка, я бы использовал const & если вы не планируете изменять входной аргумент.

void myFunction (QString const & theMsg)

Ответ 2

Наиболее эффективным и практичным способом является использование ссылки const. QOWString COW будет медленнее, чем передача по ссылке, но быстрее, чем обычная копия.