[HH] c++ strings?
Greg London
email at greglondon.com
Tue Nov 20 15:41:36 EST 2012
hm, once I use pass by reference, I have to use "const" or I get a compile
error.
int main ()
{
Note("hello world\n");
return 0;
}
void Note( string &msg){
_say("Note: "+msg);
}
The error is:
hello.cpp:20: error: invalid initialization of non-const reference of type
'std::string&' from a temporary of type 'const char*'
Where line 20 is the bit that says: Note("hello world\n");
Why would I need "const" when I pass by reference, but not need const when
I pass by value?
> Should I put the "&" in front of msg? i.e.
>
> void _say(const string &msg){
>
>
>> Almost perfect. I would make a few minor changes.
>>
>> void _say(const string msg&){
>> cout<<msg;
>> }
>>
>>
>> void Note(const string msg&){
>> _say("Note: "+msg);
>> }
>>
>> Minor efficiencies. In your code in when note() is called the string is
>> copied so msg is a copy of the input. In _say("Note: "+msg);
>> you are creating a new string, but that string is also copied. Setting
>> up
>> a call by reference saves 2 copies in this case. The compiler can
>> optimize the _say function to where the call by reference does not
>> matter, but not the note() function which is external.
>>
>>
>> --
>> Jerry Feldman <gaf at blu.org>
>> Boston Linux and Unix
>> PGP key id:3BC1EB90
>> PGP Key fingerprint: 49E2 C52A FC5A A31F 8D66 C0AF 7CEA 30FC 3BC1 EB90
>>
>>
>> _______________________________________________
>> Hardwarehacking mailing list
>> Hardwarehacking at blu.org
>> http://lists.blu.org/mailman/listinfo/hardwarehacking
>>
>
>
> --
>
>
> _______________________________________________
> Hardwarehacking mailing list
> Hardwarehacking at blu.org
> http://lists.blu.org/mailman/listinfo/hardwarehacking
>
--
More information about the Hardwarehacking
mailing list