Confused about class equality
strtr
strtr at spam.com
Sat Apr 3 04:02:12 PDT 2010
Jacob Carlborg Wrote:
> On 4/3/10 07:03, strtr wrote:
> > What I probably mean to ask is :
> > In the code below, for what kind of i1 and i2 would the output be like this :
> > ---------
> > Same Value.
> > 3 : 5B536C 59D020
> > 3 : 59CE0C 59CEF0
> > 5 : 5B536C 59D020
> > 5 : 59CE0C 59CEF0
> > ---------
> > if( i1 !is null&& i2 !is null&& i2.value == i1.value ) {
> > writefln("Same Value.");
> > if( i2 is i1 ) writefln("Same Object.");
> > writefln( i2.toString()," : ",i2.__vptr," ",i2.__monitor);
> > writefln( i1.toString(), " : ", i1.__vptr," ",i1.__monitor);
> > i1.value = 5;
> > writefln( i2.toString()," : ",i2.__vptr," ",i2.__monitor);
> > writefln( i1.toString(), " : ", i1.__vptr," ",i1.__monitor);
> > }
> >
> >
>
> I would guess:
>
> i1 = new I;
> i2 = new I;
>
> They are two different instance of "I" but containing the same value.
> When comparing two objects using "is", the addresses are compared and
> not the data in the object, i.e. instance variables.
Wouldn't that simply result in the following?
3 : 5B536C 59D020
3 : 59CE0C 59CEF0
5 : 5B536C 59D020
3 : 59CE0C 59CEF0
More information about the Digitalmars-d-learn
mailing list