Ja dat kan, maar dan gaan objecten alsnog kopietjes maken als ze buiten de directe call die string nog nodig hebben (en waarschijnlijk in een object member opslaan), omdat ze geen ownership hebben. Dan kan je net zo goed een std::string gebruiken.
En als de functie de string enkel in de directe functie nodig heeft, kan de functie gewoon een std::string & als argument hebben en c_str() gebruiken, en word er ook geen kopie gemaakt. Dan blijft het enige geval van overhead als je nog geen std::string instance hebt (dan moet je dus een std::string construeren).
Maar je zou het waarschijnlijk kunnen hacken door een struct te maken met dezelfde members als je std::string implementatie en een operator const std::string & eraan te hangen (maar dat is wel tricky, je bent afhankelijk van je specifieke std::string implementatie, en gaat ervan uit dat alle const members die aangeroepen worden vanuit de functie die const std::string & als argument neemt van std::string niets veranderen (dus geen mutables members)).
Waarschijnlijk is het makkelijker om gewoon overal std::string te gebruiken, dan hoef je geen tijdelijke std::string's te construeren
[
Voor 2% gewijzigd door
MLM op 07-06-2010 16:21
. Reden: hacks :( ]