The meaning of a = b in object oriented languages.
I just want to confirm that in OOP, if a is an object, then b = a is
only copying the reference.
(to make it to the most basic form:
a is 4 bytes, let’s say, at memory location 0x10000000 to 0x10000003
b is 4 bytes, let’s say, at memory location 0x20000000 to 0x20000003
in 0x10000000 to 0x10000003, it is the value 0xF0000000, pointing to
an object
b = a just means
copy the 4 bytes 0xF0 0x00 0x00 0x00 into 0x20000000 to 0x2000003
so that b now points to 0xF0000000 which is the same object.)
so essentially, a is just a pointer to an object.
and b = a just means that put that same pointer into b.
and that’s why in Python or Ruby, it is like:
a = {“a” : 1, “b” : 2}
b = a
a
{‘a’: 1, ‘b’: 2}b
{‘a’: 1, ‘b’: 2}a[“a”] = 999
a
{‘a’: 999, ‘b’: 2}b
{‘a’: 999, ‘b’: 2}
so most or all object oriented language do assignment by reference?
is there any object oriented language actually do assignment by
value? I kind of remember in C++, if you do
Animal a, b;
a = b will actually be assignment by value.
while in Java, Python, and Ruby, there are all assignment by
reference. (“set by reference”)
Is that the case: if a is an object, then b = a is only copying the
reference?