Re: changing reference
On Jul 17, 4:14 am, "BobR" <removeBadB...@worldnet.att.net> wrote:
<winst...@gmail.com> wrote in message...
consider the following code...
string a = "1";
string b = "2";
string& c = a;
how do I change c to refer to b instead of a?
Can't reseat 'c'.
{
std::string a = "1";
std::string b = "2";
std::string &c( a );
std::cout<<"string &c(a) c="<<c<<std::endl;
a.swap( b );
std::cout<<"a.swap(b) c="<<c<<std::endl;}
// out: string &c(a) c=1
// out: a.swap(b) c=2
I'm not sure what this is supposed to show. Consider:
std::cout.setf( std::ios::boolalpha ) ;
std::string a = "1" ;
std::string b = "2" ;
std::cout << "&a = " << &a << ", &b = " << &b << std::endl ;
std::string& c = a ;
std::cout << "a = " << a
<< ", b = " << b
<< ", c = " << c
<< ", &c = " << &c << std::endl ;
a.swap( b ) ;
std::cout << "a = " << a
<< ", b = " << b
<< ", c = " << c
<< ", &c = " << &c << std::endl ;
I get:
&a = ffbedfe0, &b = ffbedfd8
a = 1, b = 2, c = 1, &c = ffbedfe0
a = 2, b = 1, c = 2, &c = ffbedfe0
You've swapped a and b, but you've not changed the binding of c
in any way. Once constructed, there is no legal way to change
the binding of a reference.
--
James Kanze (GABI Software) email:james.kanze@gmail.com
Conseils en informatique orient=E9e objet/
Beratung in objektorientierter Datenverarbeitung
9 place S=E9mard, 78210 St.-Cyr-l'=C9cole, France, +33 (0)1 30 23 00 34