I don't completly understand your question, but if it is about the .x and .y:
Both temp and param are of class CVector, wich seems to have (at least) to membervariables: x and y. So one object (param) can have several values in it. By writing param.x you access the x-variable of param, by writing param.y you access the y-variable of param.
Hope this helps. If this isn't an answer to your question: what are you asking exactly?
To me it seems like the parameter of the operator+ function is a single new CVector class called param. Then he makes a new Cvector class called temp. Then he says that temp.x is equivilant to x (where is this defined) + param.x (I think this is retained by the input of a Cvector class)...
Does the operator+ funtion work by taking the first CVector and getting the "x" and "y" values from there and then reading param.x and param.y from the second CVector class (the parameter)???
Here the operator+ function from firstObject is called. As parameter, secondObject is used. It returns an object (temp) that has the added values from x (member of firstObject) + param.x (member of parameter) end y+param.y (same here) in it. This returnvalue is stored into thirdObject.