In my C++ book, I don't understand this particular example demonstrating operator overloading:

Code:
ThreeD ThreeD :: operator=(ThreeD &op2) {
x=op2.x;
y=op2.y;
z=op2.z;
return *this;
}
What I don't understand is the need to return *this. I know the function is specified as returning an object type 'ThreeD' but isn't that redundant? Would the following achieve the same thing:

Code:
void ThreeD :: operator=(ThreeD&op2) {
x=op2.x;
y=op2.y;
z=op2.z;
return;
}