[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