views:

273

answers:

2

I would like to know what is the most efficient and practical way of sending a Qstring as a parameter to a function, in QT more specifically. I want to use a reference. The problem is I also want to instantiate that string in the function itself like so for example:

this is the function prototype:
void myFunction(QString & theMsg);

this is the function call:
myFunction(tr("Hello StringWorld"));


now the function tr() returns a QString but it doesn't work with a reference(I can see why).

I have to do this:

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

Is there a simpler way to do this while still using references or could I just change the function parameter to use a QString and it would still be efficient?

+2  A: 

QString uses COW (Copy On Write) behind the scenes, so the actual string isn't copied even if you use a signature like this:

void myFunction(QString theMsg)

(until you modify it that is).

If you absolutely want a reference I would use a const& unless you plan to modify the input argument.

void myFunction(QString const& theMsg)

Morten Fjeldstad
No thats great, thx! this is what I wanted to know. So it actually does the same thing as an NSString in Objective-C on a mac.
yan bellavance
Colin
+1  A: 

The most efficient and practical way is using a const reference. The QString COW will be slower than pass by reference but faster than a regular copy.

rpg