class Foo
{
private :
int iX;
public :
Foo( ) { iX = 5 ; } ;
int getData( )
{
return iX;
}
Foo& operator= ( const Foo & RHS) ;
} ;
Foo& Foo:: operator = ( const Foo & RHS)
{
if ( this ! = & RHS)
{ // the if this test prevents an object from copying to itself (ie. RHS = RHS;)
this- > iX = RHS.iX ; // this is suitable for this class, but can be more complex when
// copying an object in a different much larger class
}
return ( * this ) ; // returning an object allows chaining, like a = b = c; statements
}
Y2xhc3MgRm9vCnsKcHJpdmF0ZToKICAgIGludCBpWDsKcHVibGljOgogICAgRm9vKCkgeyBpWCA9IDU7IH07CgogICAgaW50IGdldERhdGEoKSAgICAgICAgICAKICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgcmV0dXJuIGlYOyAgCiAgICB9CgogICAgRm9vJiBvcGVyYXRvcj0oY29uc3QgRm9vICZSSFMpOwp9OwoKRm9vJiBGb286Om9wZXJhdG9yPShjb25zdCBGb28gJlJIUykKewogICAgaWYodGhpcyAhPSAmUkhTKQogICAgeyAgICAvLyB0aGUgaWYgdGhpcyB0ZXN0IHByZXZlbnRzIGFuIG9iamVjdCBmcm9tIGNvcHlpbmcgdG8gaXRzZWxmIChpZS4gUkhTID0gUkhTOykKICAgICAgICB0aGlzLT5pWCA9IFJIUy5pWDsgICAgIC8vIHRoaXMgaXMgc3VpdGFibGUgZm9yIHRoaXMgY2xhc3MsIGJ1dCBjYW4gYmUgbW9yZSBjb21wbGV4IHdoZW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvcHlpbmcgYW4gb2JqZWN0IGluIGEgZGlmZmVyZW50IG11Y2ggbGFyZ2VyIGNsYXNzCiAgICB9CgogICAgcmV0dXJuICgqdGhpcyk7ICAgICAgICAgICAgLy8gcmV0dXJuaW5nIGFuIG9iamVjdCBhbGxvd3MgY2hhaW5pbmcsIGxpa2UgYSA9IGIgPSBjOyBzdGF0ZW1lbnRzCn0=